找回密码
 立即注册

QQ登录

只需一步,快速开始

CanYou1

高级会员

45

主题

227

帖子

1359

积分

高级会员

积分
1359

活字格认证微信认证勋章元老葡萄

CanYou1
高级会员   /  发表于:2015-12-3 21:54  /   查看:9310  /  回复:12
Alice,如题,如何让DataGrid每一行根据其绑定的DataItem的一个属性值的变动而改变其显示或是隐藏的特性?
比如有一个DataGrid列表,其ItemsSource绑定的是Student实体列表StudentList。
我想将DataGrid每一行的Visibility属性绑定到其对应的Student实体的IsDeleted属性,当IsDeleted为true时,这一行就隐藏(而不是删除)。
也就是说,假如StudentList有10条数据且IsDeleted属性都是false,我要达到的效果是,
当我将前3条数据的IsDeleted属性设为true时,StudentList还是10条数据不变,但是DataGrid的前3行被隐藏了。

请问如何实现这样的需求?

12 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-12-4 10:42:00
沙发
回复 1楼CanYou1的帖子

谢谢您的反馈。
您的问题我收到了,测试后给您反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-12-4 17:38:00
板凳
回复 1楼CanYou1的帖子

经过校验。
要通过DataRow.Visibility属性来控制行的隐藏和显示,无法通过XAML实现。
只能通过代码修改Row.Visibility属性。因此采用的方式是利用LoadingRow事件,在该事件里去判断IsDelete属性的值,当满足条件的时候,设置 e.Row.Visibility = System.Windows.Visibility.Collapsed;
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou1
高级会员   /  发表于:2015-12-4 17:55:00
地板
回复 3楼Alice的帖子

这种方式我是知道的,但是我要的不是直接改Row.Visibility,我要的是改Student的IsDeleted属性,然后通过Binding自动同步到界面去。不在xaml上写,在cs后台写也是可以的啊,关键是我在cs里也写不了绑定啊,能不能想想办法?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-12-7 09:33:00
5#
回复 4楼CanYou1的帖子

很抱歉绑定做不到,只能通过代码设置DataRow.Visibility属性来设置。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou1
高级会员   /  发表于:2015-12-7 15:15:00
6#
回复 5楼Alice的帖子

你确定不行?能不能使用DataEventTrigger?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-12-7 16:14:00
7#
回复 6楼CanYou1的帖子

我理解您是想通过如下方式去实现绑定:
  1. <Style.Triggers>
  2.                         <DataTrigger Binding="{Binding 绑定到某个字段}" Value="True">
  3.                             <Setter Property="Visibility" Value="Collapsed"/>
  4.                         </DataTrigger>
  5.                     </Style.Triggers>
复制代码


这种方案是行不通的。通过这种方式您只能设置DataGridRowPresenter,但Visible在这里是无效的。
实际上行的可见性是由'DataGridRow'的Visible属性来控制的。除此之外,我想不到更好的控制行可见性的方法。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou1
高级会员   /  发表于:2015-12-7 17:08:00
8#
回复 7楼Alice的帖子

对啊,把这个Style应用到DataGridRow不行吗?类似如下:
  1. <Style TargetType="C1DataGridRow">
  2. <Style.Triggers>
  3.                         <DataTrigger Binding="{Binding 绑定到某个字段}" Value="True">
  4.                             <Setter Property="Visibility" Value="Collapsed"/>
  5.                         </DataTrigger>
  6.                     </Style.Triggers>
  7. </Style>
复制代码
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-12-7 18:09:00
9#
回复 8楼CanYou1的帖子

很抱歉,不支持这样设置。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou1
高级会员   /  发表于:2015-12-7 18:18:00
10#
回复 9楼Alice的帖子

为什么?难道给C1DataGridRow设置Style也做不到?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部