Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:如何通过代码隐藏找到控件_C#_Wpf_Xaml - Fatal编程技术网

C# WPF:如何通过代码隐藏找到控件

C# WPF:如何通过代码隐藏找到控件,c#,wpf,xaml,C#,Wpf,Xaml,我需要找到datagrid控件,它位于combobox附近,后面有一个代码。发件人是一个组合框 XAML代码: <Window.Resources> <BooleanToVisibilityConverter x:Key="BoolToVis" /> <Style TargetType="{x:Type ComboBox}" x:Key="ComboboxSpreadsheetStyle"> <Se

我需要找到datagrid控件,它位于combobox附近,后面有一个代码。发件人是一个组合框

XAML代码:

<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>

您可能会为DataGrid指定一个名称,并在代码隐藏中访问相同的via名称

这里有一个例子

    <DataGrid Background="Blue" Grid.Row="1" Visibility="{Binding ElementName=it1, Path=IsSelected, Converter={StaticResource BoolToVis}}"
              x:Name="myGrid">
        <DataGrid.Columns>
          ....

使用x:name为您的网格和datagrid命名,然后您可以在代码中访问,并想知道答案是否解决了您的问题?“你们也许也会接受同样的答案。”普什普拉杰——答案在我的问题中已经解决了,但在我的情况下,它没有帮助。因为,所讨论的代码不完整。
    <DataGrid Background="Blue" Grid.Row="1" Visibility="{Binding ElementName=it1, Path=IsSelected, Converter={StaticResource BoolToVis}}"
              x:Name="myGrid">
        <DataGrid.Columns>
          ....
private void Combobox_SelectionChanged(object sender, RoutedEventArgs e)
{
    //find dataGrid control
    //myGrid.FillData etc...
}