我正在使用xceeddatagrid库(http://schemas.xceed.com/wpf/xaml/datagrid)中的DataGridControl。我想做的是基于类模型的属性隐藏/折叠数据行。我正在尝试使用数据触发器。我的问题是,DataGrid将从数据行中删除数据,但不会从行的物理空间中删除数据。因此,它留下了空白行。我尝试了常规的开箱即用的.net datagrid,但我没有任何问题。我剥夺了所有样式,仍然有这个问题。
xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid"
<xcdg:DataGridControl x:Name="dgr"
ItemsSource="{Binding Path=.Data}"
AutoCreateColumns="False">
<xcdg:DataGridControl.Resources>
<Style TargetType="{x:Type xcdg:DataRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=.IsTrue}" Value="true">
<Setter Property="Visibility" Value="Collapsed" />
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</xcdg:DataGridControl.Resources>
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="IsToday" Title="Today" Width="40" />
<xcdg:Column FieldName="Name" Title="Name" Width="70" />
<xcdg:Column FieldName="Address" Title="Address" Width="40" />
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
答案 0 :(得分:0)
查看this doc page有关可见性枚举的信息。看来您需要的值已折叠:
不显示元素,也不在布局中为其保留空间。
我不确定您是否需要“。”在DataTrigger绑定的路径中。我相信每个DataRow的IsTrue属性都将隐式访问,而不需要点号。
除此之外,我看到的主要问题是DataTrigger中的同一属性有两个设置器。根据您的描述,似乎DataRow的“可见性”已设置为“已折叠”,但随后设置为“隐藏”,这确实符合您所描述的问题:
不显示元素,但在布局中为元素保留空间。
因此,我认为解决方案是删除有冲突的可见性设定器。