Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.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:隐藏时将文本绑定到标题DataGridColumn中_C#_Wpf_Binding_Datagrid_Hidden - Fatal编程技术网

C# WPF:隐藏时将文本绑定到标题DataGridColumn中

C# WPF:隐藏时将文本绑定到标题DataGridColumn中,c#,wpf,binding,datagrid,hidden,C#,Wpf,Binding,Datagrid,Hidden,样本: 项目1 项目2 如何将label1中的文本绑定到先前隐藏的第二个DataGrid的标题中。 此示例不起作用 结果: 正如您所看到的,出于某种原因,secondDataGrid不希望绑定来自标签的文本使用x:Reference代替

样本:


项目1
项目2
如何将
label1
中的文本绑定到先前隐藏的第二个
DataGrid
的标题中。 此示例不起作用

结果:


正如您所看到的,出于某种原因,second
DataGrid
不希望绑定来自
标签的文本
使用
x:Reference
代替
,它可以工作:

<Window.Resources>
    <BooleanToVisibilityConverter x:Key="BoolToVis" />
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Label Grid.Row="0" x:Name="label1" Content="Text"/>
    <ComboBox Grid.Row="1" SelectedIndex="0">
        <ComboBoxItem x:Name="it1">Item1</ComboBoxItem>
        <ComboBoxItem x:Name="it2">Item2</ComboBoxItem>
    </ComboBox>
    <DataGrid Background="Blue" Grid.Row="2" Visibility="{Binding ElementName=it1, Path=IsSelected, Converter={StaticResource BoolToVis}}">
        <DataGrid.Columns>
            <DataGridTextColumn>
                <DataGridTextColumn.Header >
                    <TextBlock Text="{Binding ElementName=label1, Path=Content}"/>
                </DataGridTextColumn.Header>
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
    <DataGrid Background="Red" Grid.Row="2" Visibility="{Binding ElementName=it2, Path=IsSelected, Converter={StaticResource BoolToVis}}">
        <DataGrid.Columns>
            <DataGridTextColumn>
                <DataGridTextColumn.Header >
                    <TextBlock Text="{Binding ElementName=label1, Path=Content}"/>
                </DataGridTextColumn.Header>
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
</Grid>


问题是
ElementName
内部使用可视化树查找源元素对象,但由于网格最初被折叠,所以找不到它

x:Reference
在内部不使用可视化树。因此,即使在崩溃状态下,也能够解析绑定

你可以在这里阅读更多关于它的信息-

<TextBlock Text="{Binding Source={x:Reference label1}, Path=Content}"/>