首页 新闻 会员 周边

WPF DataGrid怎么实现多行选中,不能使用CheckBox

0
悬赏园豆:60 [已关闭问题] 关闭于 2013-10-24 12:36

在一个DataGrid中,不使用CheckBox的情况下,怎么实现多行选中。。

我的想法是:在*.xaml.cs代码中定义一个集合,当触发了行的点击事件的时候,就获取到点击的行,然后将行添加到List集合中。这样也实现了多行选中。但是,WPF中有默认的依赖项,每次点击DataGrid的行的时候都会将上次选中的行的样式消除,然后将新选中的行的样式修改,并还原上次选中行的样式。

我想知道能否消除掉WPF的默认样式。在网上搜索了很久,没有找到类似的资料。

如果看了我的想法,觉得行不通,那么帮忙想个思路,我是个WPF新手,最好有源码,方便我速度弄懂。。在线急求

呓语鑫的主页 呓语鑫 | 菜鸟二级 | 园豆:313
提问于:2013-10-23 11:23
< >
分享
所有回答(3)
0

不是很明白你想要的,但是刚才我试了试DataGrid可以多行选中啊,ctrl+选的行,后台也不需要些什么点击事件来添加到集合里,直接datagrid1.SelectItems就行了呗。??或者我说的不是你像要的

翻墙小龙虾 | 园豆:34 (初学一级) | 2013-10-23 12:13

恩,对。这样说吧。我的需求是   点击选中,再次点击然后取消选中。不能使用Ctrl和CheckBox

支持(0) 反对(0) 呓语鑫 | 园豆:313 (菜鸟二级) | 2013-10-23 13:23
0

在每行中加入一个隐藏域,用于区分是否选中.每行的点击事件里面添加内容,当点击此行时,如果没被选中,就修改隐藏域的值并修改当前行的样式,反之亦然.最后提交操作的时候遍历所有行,找到每行隐藏域的值,区分当前行是否为选中.

Eric.luo | 园豆:853 (小虾三级) | 2013-10-24 10:29

我获取所有需要的数据已经取到。目前纠结的一个点就是这样一个功能。

我每次选中一行会修改当前行的样式,并添加到集合中。然后我再次点击应该做的操作是消除行的颜色,并在集合中删除数据。

现在还没做完的就是第二次点击,行的颜色不会有变化。我有定义一个属性。然后用这个属性写了一个事件触发器。当这个属性为True的时候会触发颜色变动。(理论上来说只需要颜色消除,还原以前的颜色。但是现在这个效果无法实现。我也不知道是不是WPF的默认模板里面的样式有影响还是怎么回事)

支持(0) 反对(0) 呓语鑫 | 园豆:313 (菜鸟二级) | 2013-10-24 11:07
0

通过重写DataGridRow和DataGridCell模板,将其默认的事件修改。完成了DataGrid不使用CheckBox实现了多行选中,并且可以单击选择是否选中当前行的效果

呓语鑫 | 园豆:313 (菜鸟二级) | 2013-10-24 11:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册