我有自定义treelistview,我在treelistview的第一列放了一个复选框。一切都很好,但是当我想隐藏复选框列用于其他目的(使用变量SelectEnable)时,它没有正确隐藏(它隐藏但仍留有空白区域)。当我加载数据时会发生这个问题(我的意思是当treelistview为空时,列被隐藏)。
这是我的xaml的一些部分:
<Style x:Key="checkboxColumnStyle"
TargetType="GridViewColumnHeader">
<Setter Property="Width"
Value="0" />
<Setter Property="Visibility"
Value="Hidden" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=SelectEnable}"
Value="False">
<Setter Property="Visibility"
Value="Hidden" />
<Setter Property="Width"
Value="0" />
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=SelectEnable}"
Value="True">
<Setter Property="Visibility"
Value="Visible" />
<Setter Property="Width"
Value="30" />
</DataTrigger>
</Style.Triggers>
</Style>
<DataTemplate x:Key="CellTemplate_checkBox">
<CheckBox IsChecked="{Binding IsSelected}"
VerticalAlignment="Center"
Style="{DynamicResource checkboxStyle}"
Tag="{Binding}"
Checked="CheckBox_Checked"
Unchecked="CheckBox_Checked" />
</DataTemplate>
<GridViewColumnCollection x:Key="gvcc">
<GridViewColumn CellTemplate="{StaticResource CellTemplate_checkBox}">
<GridViewColumnHeader Style="{DynamicResource checkboxColumnStyle}"
MaxWidth="0">
<CheckBox x:Name="chechBoxAll"
Style="{DynamicResource checkboxStyle}"
Checked="chechBoxAll_Checked"
Unchecked="chechBoxAll_Checked" />
</GridViewColumnHeader>
</GridViewColumn>
<!--Other Columns -->
</GridViewColumnCollection>
我该如何解决这个问题?
答案 0 :(得分:3)
您可能需要Visibility.Collapsed
而不是Visibility.Hidden
。
Hidden
表示元素存在但无法看到(类似于0的Opacity
),而Collapsed
会导致布局排列发生,就好像元素不存在一样(不宽度没有高度。)