wpf datagrid自定义标头在数据折叠时保留空间

时间:2018-02-27 11:59:57

标签: wpf xaml datagridview

我的DataGrid中有一个包含自定义标题的列。当用户启用CheckBox(命名:show)时,标题的一部分需要消失。当我启用CheckBox时,我可以看到文字消失,但宽度没有调整,所以他们仍然保留他们习惯的空间。

<telerik:GridViewDataColumn.Header>
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="Name" Margin="0,0,35,0" />
        <TextBlock Text="Date" Margin="0,0,35,0" Visibility="{Binding Path=IsChecked,Source={x:Reference show}, Converter={StaticResource BooleanToVis}}" />
        <TextBlock Text="Address" Margin="0,0,35,0" Visibility="{Binding Path=IsChecked,Source={x:Reference show}, Converter={StaticResource BooleanToVis}}" />
        <TextBlock Text="Tel" Margin="0,0,35,0" Visibility="{Binding Path=IsChecked,Source={x:Reference show}, Converter={StaticResource BooleanToVis}}" />
        <TextBlock Text="Mobile" Margin="0,0,35,0" />
    </StackPanel>
</telerik:GridViewDataColumn.Header>

1 个答案:

答案 0 :(得分:1)

您需要自己更改宽度。 DataGrid不会动态地为您更改列的宽度。

执行此操作的最简单方法可能是在视图的代码隐藏中处理SizeChanged的{​​{1}}事件(这纯粹是基于视图或控件的逻辑):< / p>

StackPanel

<强> XAML:

private void StackPanel_SizeChanged(object sender, SizeChangedEventArgs e)
{
    colX.Width = ((StackPanel)sender).ActualWidth;
}