如何让DataGrid每一行根据其绑定的DataItem的一个属性值的变动而改变其显示或是隐藏的特性?
Alice,如题,如何让DataGrid每一行根据其绑定的DataItem的一个属性值的变动而改变其显示或是隐藏的特性?比如有一个DataGrid列表,其ItemsSource绑定的是Student实体列表StudentList。
我想将DataGrid每一行的Visibility属性绑定到其对应的Student实体的IsDeleted属性,当IsDeleted为true时,这一行就隐藏(而不是删除)。
也就是说,假如StudentList有10条数据且IsDeleted属性都是false,我要达到的效果是,
当我将前3条数据的IsDeleted属性设为true时,StudentList还是10条数据不变,但是DataGrid的前3行被隐藏了。
请问如何实现这样的需求? 回复 1楼CanYou1的帖子
谢谢您的反馈。
您的问题我收到了,测试后给您反馈。 回复 1楼CanYou1的帖子
经过校验。
要通过DataRow.Visibility属性来控制行的隐藏和显示,无法通过XAML实现。
只能通过代码修改Row.Visibility属性。因此采用的方式是利用LoadingRow事件,在该事件里去判断IsDelete属性的值,当满足条件的时候,设置 e.Row.Visibility = System.Windows.Visibility.Collapsed; 回复 3楼Alice的帖子
这种方式我是知道的,但是我要的不是直接改Row.Visibility,我要的是改Student的IsDeleted属性,然后通过Binding自动同步到界面去。不在xaml上写,在cs后台写也是可以的啊,关键是我在cs里也写不了绑定啊,能不能想想办法? 回复 4楼CanYou1的帖子
很抱歉绑定做不到,只能通过代码设置DataRow.Visibility属性来设置。 回复 5楼Alice的帖子
你确定不行?能不能使用DataEventTrigger? 回复 6楼CanYou1的帖子
我理解您是想通过如下方式去实现绑定:
<Style.Triggers>
<DataTrigger Binding="{Binding 绑定到某个字段}" Value="True">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
这种方案是行不通的。通过这种方式您只能设置DataGridRowPresenter,但Visible在这里是无效的。
实际上行的可见性是由'DataGridRow'的Visible属性来控制的。除此之外,我想不到更好的控制行可见性的方法。 回复 7楼Alice的帖子
对啊,把这个Style应用到DataGridRow不行吗?类似如下:
<Style TargetType="C1DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding 绑定到某个字段}" Value="True">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
回复 8楼CanYou1的帖子
很抱歉,不支持这样设置。 回复 9楼Alice的帖子
为什么?难道给C1DataGridRow设置Style也做不到?
页:
[1]
2