datagrid 全选问题

qq14923349 2018-01-17 09:34:56
多个记录 全选后滚动下拉有些项没有选上
全部取消 有些又没有被取消 开了UI虚拟化
这个怎么处理较好
...全文
468 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq14923349 2018-01-29
  • 打赏
  • 举报
回复
引用 7 楼 zhuo_wp 的回复:
[quote=引用 5 楼 qq14923349 的回复:] [quote=引用 3 楼 bluk44444 的回复:] 1、 EnableColumnVirtualization="False"; EnableRowVirtualization="True"; 2、IsChecked="{Binding check}"不设置双向绑定。 3、 改变CheckBox的选中状态时,先注销他的事件。 List<CheckBox> cbs = GetChildObjects<CheckBox>(dataGrid, "qxcb"); CheckBox cb = cbs[0]; cb.Checked -= qx_Checked; cb.Unchecked -= qx_Unchecked; if (allCheck) { cb.IsChecked = true; } else { cb.IsChecked = false; } cb.Checked += qx_Checked; cb.Unchecked += qx_Unchecked; 4、全选时遍历数据源,设置 ii.check = false;然后 dataGrid.ItemsSource = null; dataGrid.ItemsSource = iis;
我用的是mvvm模式[/quote]既然用的是mvvm模式,设置全选的时候为什么还要去ui上找数据源来操作? 点击全选按钮的时候直接改绑定的数据源的选中属性呀。[/quote] 语文理解能力提高点...
zhuowp 2018-01-29
  • 打赏
  • 举报
回复
引用 5 楼 qq14923349 的回复:
[quote=引用 3 楼 bluk44444 的回复:] 1、 EnableColumnVirtualization="False"; EnableRowVirtualization="True"; 2、IsChecked="{Binding check}"不设置双向绑定。 3、 改变CheckBox的选中状态时,先注销他的事件。 List<CheckBox> cbs = GetChildObjects<CheckBox>(dataGrid, "qxcb"); CheckBox cb = cbs[0]; cb.Checked -= qx_Checked; cb.Unchecked -= qx_Unchecked; if (allCheck) { cb.IsChecked = true; } else { cb.IsChecked = false; } cb.Checked += qx_Checked; cb.Unchecked += qx_Unchecked; 4、全选时遍历数据源,设置 ii.check = false;然后 dataGrid.ItemsSource = null; dataGrid.ItemsSource = iis;
我用的是mvvm模式[/quote]既然用的是mvvm模式,设置全选的时候为什么还要去ui上找数据源来操作? 点击全选按钮的时候直接改绑定的数据源的选中属性呀。
bluk44444 2018-01-19
  • 打赏
  • 举报
回复
引用 5 楼 qq14923349 的回复:
[quote=引用 3 楼 bluk44444 的回复:] 1、 EnableColumnVirtualization="False"; EnableRowVirtualization="True"; 2、IsChecked="{Binding check}"不设置双向绑定。 3、 改变CheckBox的选中状态时,先注销他的事件。 List<CheckBox> cbs = GetChildObjects<CheckBox>(dataGrid, "qxcb"); CheckBox cb = cbs[0]; cb.Checked -= qx_Checked; cb.Unchecked -= qx_Unchecked; if (allCheck) { cb.IsChecked = true; } else { cb.IsChecked = false; } cb.Checked += qx_Checked; cb.Unchecked += qx_Unchecked; 4、全选时遍历数据源,设置 ii.check = false;然后 dataGrid.ItemsSource = null; dataGrid.ItemsSource = iis;
我用的是mvvm模式[/quote] 我当时用的也是虚拟行,后来发现没办法,就改成了非虚拟行。 你用mvvm就不知道了,你检测一下各个事件看。
qq14923349 2018-01-19
  • 打赏
  • 举报
回复
引用 3 楼 bluk44444 的回复:
1、 EnableColumnVirtualization="False"; EnableRowVirtualization="True"; 2、IsChecked="{Binding check}"不设置双向绑定。 3、 改变CheckBox的选中状态时,先注销他的事件。 List<CheckBox> cbs = GetChildObjects<CheckBox>(dataGrid, "qxcb"); CheckBox cb = cbs[0]; cb.Checked -= qx_Checked; cb.Unchecked -= qx_Unchecked; if (allCheck) { cb.IsChecked = true; } else { cb.IsChecked = false; } cb.Checked += qx_Checked; cb.Unchecked += qx_Unchecked; 4、全选时遍历数据源,设置 ii.check = false;然后 dataGrid.ItemsSource = null; dataGrid.ItemsSource = iis;
我用的是mvvm模式
qq14923349 2018-01-19
  • 打赏
  • 举报
回复
引用 3 楼 bluk44444 的回复:
1、 EnableColumnVirtualization="False"; EnableRowVirtualization="True"; 2、IsChecked="{Binding check}"不设置双向绑定。 3、 改变CheckBox的选中状态时,先注销他的事件。 List<CheckBox> cbs = GetChildObjects<CheckBox>(dataGrid, "qxcb"); CheckBox cb = cbs[0]; cb.Checked -= qx_Checked; cb.Unchecked -= qx_Unchecked; if (allCheck) { cb.IsChecked = true; } else { cb.IsChecked = false; } cb.Checked += qx_Checked; cb.Unchecked += qx_Unchecked; 4、全选时遍历数据源,设置 ii.check = false;然后 dataGrid.ItemsSource = null; dataGrid.ItemsSource = iis;
我必须用到UI虚拟化 否则数据量大加载非常慢
bluk44444 2018-01-19
  • 打赏
  • 举报
回复
1、 EnableColumnVirtualization="False"; EnableRowVirtualization="True"; 2、IsChecked="{Binding check}"不设置双向绑定。 3、 改变CheckBox的选中状态时,先注销他的事件。 List<CheckBox> cbs = GetChildObjects<CheckBox>(dataGrid, "qxcb"); CheckBox cb = cbs[0]; cb.Checked -= qx_Checked; cb.Unchecked -= qx_Unchecked; if (allCheck) { cb.IsChecked = true; } else { cb.IsChecked = false; } cb.Checked += qx_Checked; cb.Unchecked += qx_Unchecked; 4、全选时遍历数据源,设置 ii.check = false;然后 dataGrid.ItemsSource = null; dataGrid.ItemsSource = iis;
qq14923349 2018-01-18
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
通过数据绑定形式全部选择,选择后得结果通知到数据源,处理数据源。
我目前就是这样做的 但是会出现某些项有问题 网上说法是ui虚拟化 除了可视项其他项被销毁了 所以设置有问题 另外问个 我在datagrid里面 的 celltemplate加了个checkbox 绑定自建model的isselected ->twoway 运行点击 checkbox勾选后自己又取消了!!! 跟踪isselected属性发现点击触发了两次 首先是true 然后是false,但是代码没有写让它false的 ???
exception92 2018-01-18
  • 打赏
  • 举报
回复
通过数据绑定形式全部选择,选择后得结果通知到数据源,处理数据源。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧