【发布时间】:2013-09-21 19:09:43
【问题描述】:
对于 WPF 虚拟化 DataGrid,我需要使用“全选”方法。迭代网格本身不起作用,因为它只会选择在 UI 中可见的记录 - 但当然,如果它们是使用鼠标选择的,它们会被保留。我猜 DataTable 中的某些东西必须改变,但是什么?如果可以,是否可以对其进行操作,以便在 DataGrid 中选择所有记录?
谢谢
=========================添加====================== =====
Eran - 感谢您的回复,但有工作将其连接起来
-
创建数据网格
Dim DGV As New CustomControl.DGVx With DGV .Name = "Invoice_AdHoc_DGV" .AutoGenerateColumns = False .SelectionMode = SelectionMode.Multiple End With RegisterControl(Invoice_AdHoc_Grid, DGV) RightGrid.Children.Add(DGV) -
绑定到数据表
DGV.ItemsSource = AdHocDT.DefaultView -
根据您的回答创建课程
Public Class ObjectSelectAll Implements System.ComponentModel.INotifyPropertyChanged Public Property Name() As String Private vIsSelected As Boolean Public Property IsSelected() As Boolean Get Return vIsSelected End Get Set(value As Boolean) vIsSelected = value RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs("IsSelected")) End Set End Property Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged结束类
【问题讨论】:
-
我会在我的 .cs 对象上而不是在可视对象上使用全选逻辑,你所说的选中是什么意思,你有一个绑定到某个 IsSelected 属性的 chekcbox 列吗?
-
单击行选择它(IsSelected = True)-如果用户单击“全选”按钮,我想做同样的事情。有没有办法用 DataTable 做到这一点?
-
您可以创建一个行样式,该样式指示绑定到行 IsSelected 的对象中的值,并且当单击全选时它们会更新对象中的绑定属性。至于 UI,只有“已实现”的对象才能被“选中”
-
我可以遍历 DataTable 并获得所需的结果,但如果颜色/字体的变化也可以在 DataGrid 中复制,就好像它是鼠标选择的行一样 - 我的一切已尝试仅适用于 UI 的可见部分。
-
给出的答案选择了行,并且在 UI 中可见。