Как найти элемент управления Label в Silverlight Datagrid Dropdown SelectionChanged Event

Я использую SiverLight Datagrid на той стороне, где есть один раскрывающийся список и метка. В событии SelectedIndexChanged раскрывающегося списка я хочу найти метку и присвоить выбранное значение DropdownList.

Xaml-страница:

 <sdk:DataGridTemplateColumn  Header="New Receipe" CanUserSort="True" >
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Grid>

                                <Border Style="{StaticResource GridBackgroundBorder}"  Background="{Binding Path=IsActive, Converter={StaticResource BoolToBackgroundValueConverter1}}"></Border>
                                <sdk:Label Margin="5,0,5,0" x:Name="lblCompVer" Content="{Binding Path=Version}" Height="Auto" VerticalAlignment="Center" Foreground="{Binding Path=IsActive, Converter={StaticResource BoolToForegroundValueConverter1}}"/>
                            </Grid>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                    <sdk:DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <Grid>
                                <ComboBox Height="Auto" SelectionChanged="cboCompVerSel_SelectionChanged" x:Name="cboCompVerSel" ItemsSource="{Binding Path=CompVerList,Mode=TwoWay}" SelectedItem="{Binding Mode=OneWay, Path=Version}" Visibility="{Binding Path=IsActive, Converter={StaticResource BoolToVisibilityValueConverter1}}"/>
                            <!--<TextBox Height="Auto" Text="{Binding Mode=TwoWay, Path=Version}" x:Name="TextBoxCodeVer" Visibility="{Binding Path=IsActive, Converter={StaticResource BoolToVisibilityValueConverter1}}" AcceptsReturn="True"></TextBox>-->
                            </Grid>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellEditingTemplate>
                </sdk:DataGridTemplateColumn>

Событие DropDownlist SelectionChanged:

 Private Sub cboCompVerSel_SelectionChanged(ByVal sender As System.Object, ByVal e As 

    System.Windows.Controls.SelectionChangedEventArgs)

        Dim src = TryCast(sender, ComboBox)

        If src IsNot Nothing Then 

           Dim fe As FrameworkElement = CType(src.Parent, FrameworkElement)

            Dim gridCmbo As Grid = DirectCast(fe, Grid)

            Dim lblCompVer As Label = CType(gridCmbo.FindName("lblCompVer"), Label)

            lblCompVer.DataContext = src.SelectedItem 

        End If
    End Sub

Я не могу идентифицировать элемент управления lblCompVer, чтобы назначить выбранное значение в раскрывающемся списке.


person Kapil    schedule 01.08.2013    source источник
comment
Этот подход кажется чрезмерно сложным, не говоря уже о хрупкости... разве вы не можете использовать модель представления для привязки метки к соответствующему значению?   -  person McGarnagle    schedule 01.08.2013
comment
Я новичок в Silverlight, не могли бы вы подсказать мне, как это сделать?   -  person Kapil    schedule 01.08.2013


Ответы (1)


Вот ответ

Private Sub btnAssign_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)

        Dim btnAssign = TryCast(sender, Button)

        If btnAssign IsNot Nothing Then

            Dim columnUpdatedby As DataGridColumn = TaskDataGrid.Columns(15)
            Dim columntimestamp As DataGridColumn = TaskDataGrid.Columns(16)
            Dim feUpdatedby As FrameworkElement = columnUpdatedby.GetCellContent(TaskDataGrid.SelectedItem)
            Dim fetimestamp As FrameworkElement = columntimestamp.GetCellContent(TaskDataGrid.SelectedItem)

            Dim gridCmboUpdatedby As Grid = DirectCast(feUpdatedby, Grid)

            Dim gridCmbotimestamp As Grid = DirectCast(fetimestamp, Grid)

            Dim lblAssignedBy As Label = CType(gridCmboUpdatedby.FindName("lblAssignedBy"), Label)

            Dim lblAssignedTimestamp As Label = CType(gridCmbotimestamp.FindName("lblAssignedTimestamp"), Label)

            lblAssignedBy.Content = BCOMSCurrentUser.BCOMSUser.UserName
            lblAssignedTimestamp.Content = DateTime.Now.ToString()

        End If
    End Sub
person Kapil    schedule 05.08.2013