如何根据布尔标志显示或隐藏Grid列?

时间:2017-05-31 19:15:41

标签: c# wpf grid

所以我有两列我想根据布尔标志将列的宽度设置为0或*?我以为我可以用转换器来做,但我希望有一个更清洁的解决方案。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

所以我最终确定最好的解决方案是在实际列定义上使用带有DataTrigger的Style。这意味着该列有责任根据布尔属性调整自己的大小。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition>
            <ColumnDefinition.Style>
                <Style TargetType="ColumnDefinition">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ShowAdvanced}" Value="False">
                            <Setter Property="Width" Value="0" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ShowAdvanced}" Value="True">
                            <Setter Property="Width" Value="*" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ColumnDefinition.Style>
        </ColumnDefinition>
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
</Grid>

而Viola,我可以根据一次布尔检查显示或隐藏一个列!