WPF:如何发现代码背后的控制
本文关键字:代码 背后 控制 发现 何发现 WPF | 更新日期: 2023-09-27 18:18:12
我需要找到数据网格控件,它位于组合框附近,由代码后面。发送方为ComboBox
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis" />
<Style TargetType="{x:Type ComboBox}" x:Key="ComboboxSpreadsheetStyle">
<Setter Property="SelectedIndex" Value="0"/>
<EventSetter Event="SelectionChanged" Handler="Combobox_SelectionChanged"/>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<ComboBox Grid.Row="0" Style="{StaticResource ComboboxSpreadsheetStyle}">
<ComboBoxItem x:Name="it1">Item1</ComboBoxItem>
<ComboBoxItem x:Name="it2">Item2</ComboBoxItem>
</ComboBox>
<DataGrid Background="Blue" Grid.Row="1" Visibility="{Binding ElementName=it1, Path=IsSelected, Converter={StaticResource BoolToVis}}">
<DataGrid.Columns>
<DataGridTextColumn>
<DataGridTextColumn.Header >
<TextBlock Text="Text1"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<DataGrid Background="Red" Grid.Row="1" Visibility="{Binding ElementName=it2, Path=IsSelected, Converter={StaticResource BoolToVis}}">
<DataGrid.Columns>
<DataGridTextColumn>
<DataGridTextColumn.Header >
<TextBlock Text="Text2"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
c代码:
private void Combobox_SelectionChanged(object sender, RoutedEventArgs e)
{
//find dataGrid control
}
您可以为DataGrid指定一个名称,并在
后面的代码中访问相同的via名称。这里有一个例子
<DataGrid Background="Blue" Grid.Row="1" Visibility="{Binding ElementName=it1, Path=IsSelected, Converter={StaticResource BoolToVis}}"
x:Name="myGrid">
<DataGrid.Columns>
....
现在你可以在代码后访问DataGrid作为myGrid
如
private void Combobox_SelectionChanged(object sender, RoutedEventArgs e)
{
//find dataGrid control
//myGrid.FillData etc...
}