WPF XceedDataGrid使用datatrigger折叠/隐藏行

时间:2019-05-24 15:50:22

标签: c# wpf xceed-datagrid

我正在使用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>

1 个答案:

答案 0 :(得分:0)

查看this doc page有关可见性枚举的信息。看来您需要的值已折叠:

  

不显示元素,也不在布局中为其保留空间。

我不确定您是否需要“。”在DataTrigger绑定的路径中。我相信每个DataRow的IsTrue属性都将隐式访问,而不需要点号。

除此之外,我看到的主要问题是DataTrigger中的同一属性有两个设置器。根据您的描述,似乎DataRow的“可见性”已设置为“已折叠”,但随后设置为“隐藏”,这确实符合您所描述的问题:

  

不显示元素,但在布局中为元素保留空间。

因此,我认为解决方案是删除有冲突的可见性设定器。