【问题标题】:Set selected rows of Datagrid in WPF在 WPF 中设置 Datagrid 的选定行
【发布时间】:2013-12-27 01:12:37
【问题描述】:

我已经搜索过,但似乎找不到如何为多行执行此操作。

我有一个数据网格,其项目源是一个数据表。用户可以选择多行,在数据网格之外进行一些操作,然后单击一个按钮来更新数据。发生这种情况时,我希望再次选择数据网格的选定行(在单击按钮之前)。那是我似乎无法弄清楚的部分。

我认为我可以通过存储当前选定的行索引来实现这一点。我发现它们可以通过选定的单元格访问,所以我尝试了这个:

Dim rows As List(Of Integer) = New List(Of Integer)
For Each cell As DataGridCellInfo In mydatagrid.SelectedCells
     rows.Add(mydatagrid.Items.IndexOf(cell.Item))
Next

 (...code to retrieve data...)

 For Each item As Integer In rows
      mydatagrid.SelectedIndex = item
 Next

但是SelectedIndex只有一个值,只有上次选择的行被再次选择了。

我搜索了更多内容并尝试自己存储所选项目,但这没有用,没有任何内容被选中:

 Dim rows As List(Of Object) = New List(Of Object)
 rows.AddRange(mydatagrid.SelectedItems)

 (...code to retrieve data...)

 For Each item As Object In rows
        mydatagrid.SelectedItems.Add(item)
 Next

我想我错过了一些东西:(谢谢你的帮助。

【问题讨论】:

    标签: .net wpf vb.net datagrid .net-4.0


    【解决方案1】:

    你几乎明白了。您存储了选定的行索引,但 DataGrid 希望您自己选择项目:

    mydatagrid.SelectedItems.Clear()
    For Each item As Integer In rows
        If (item < mydatagrid.Items.Count) Then
            mydatagrid.SelectedItems.Add(mydatagrid.Items.GetItemAt(item))
        End If
    Next
    

    同样,如果你想恢复单元格选择,你应该存储DataGridCellInfos,然后使用SelectedCells集合。

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2011-04-24
      • 2011-05-31
      • 2013-03-10
      • 2010-11-16
      相关资源
      最近更新 更多