【问题标题】:WPF set DataGridTextColumn Visibility based on another elementWPF 根据另一个元素设置 DataGridTextColumn Visibility
【发布时间】:2016-07-24 06:07:35
【问题描述】:

这应该很简单,但让我感到困惑。我想根据另一个元素的Visibility 设置我的DataGridTextColumn 之一的Visibility。所以我这样做了:

<StackPanel>
    <TextBlock Text="This is the text" Name="MyTextBlock" Margin="5">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}" >
                <Setter Property="Visibility" Value="Visible" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=MyTextBox, Path=Text}" Value="0">
                        <Setter Property="Visibility" Value="Collapsed" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
    <TextBox Text="2"   Name="MyTextBox"  />
    <DataGrid AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="H1" />
            <DataGridTextColumn Header="H2" Visibility="{Binding ElementName=MyTextBlock, Path=Visibility}" />
        </DataGrid.Columns>
    </DataGrid>
</StackPanel>

MyTextBlockVisibility 工作正常,但 DataGridTextColumn H2 始终可见。我做错了什么?

【问题讨论】:

  • 看看这个thread。应该可以解决您的问题。

标签: wpf datagrid


【解决方案1】:

@Ruben 解决方案有效。对于任何关心这里的人来说都是工作代码:

<StackPanel>
    <StackPanel.Resources>
        <FrameworkElement x:Key="ProxyElement"
                     DataContext="{Binding ElementName=MyTextBlock}"/>
    </StackPanel.Resources>
    <TextBlock Text="This is the text" Name="MyTextBlock"  Margin="5">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}" >
                <Setter Property="Visibility" Value="Visible" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=MyTextBox, Path=Text}" Value="0">
                        <Setter Property="Visibility" Value="Collapsed" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
    <TextBox Text="0"   Name="MyTextBox"  />
    <ContentControl Visibility="Collapsed" Content="{StaticResource ProxyElement}"/>
    <DataGrid AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="H1" />
            <DataGridTextColumn Header="H2" Visibility="{Binding DataContext.Visibility,  Source={StaticResource ProxyElement}}" />
        </DataGrid.Columns>
    </DataGrid>
</StackPanel>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多