所以我有两列我想根据布尔标志将列的宽度设置为0或*?我以为我可以用转换器来做,但我希望有一个更清洁的解决方案。有什么想法吗?
答案 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,我可以根据一次布尔检查显示或隐藏一个列!