gpt4 book ai didi

c# - WPF:隐藏时将文本绑定(bind)到 Header DataGridColumn

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:16 25 4
gpt4 key购买 nike

示例:

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

如何将 label1 中的文本绑定(bind)到之前隐藏的第二个 DataGrid 中的标题中。此示例无效。

结果: enter image description here

enter image description here

如您所见,出于某种原因,第二个 DataGrid 不想绑定(bind)来自 Label 的文本

最佳答案

使用 x:Reference 代替 ElementName 它将起作用:

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

问题是 ElementName 在内部使用 Visual tree 来查找源元素对象,但由于网格最初是折叠的,所以找不到它。

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

您可以在此处阅读更多相关信息 - ElementName v/s x:Reference .

关于c# - WPF:隐藏时将文本绑定(bind)到 Header DataGridColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25283058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com