【问题标题】:WPF: Bind text into Header DataGridColumn when it is hiddenWPF:隐藏时将文本绑定到 Header DataGridColumn
【发布时间】:2014-08-13 09:48:04
【问题描述】:

示例:

<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 中的文本绑定到之前隐藏的第二个 DataGrid 的标题中。 此示例不起作用。

结果:

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

【问题讨论】:

    标签: c# wpf binding datagrid hidden


    【解决方案1】:

    使用 x:Reference 代替 ElementName 就可以了:

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

    问题是ElementName 内部使用可视树来查找源元素对象,但由于网格最初是折叠的,因此无法找到它。

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 2015-12-30
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2014-08-26
      • 2018-07-15
      • 2017-02-07
      相关资源
      最近更新 更多