WPF DataGrid:如何以编程方式清除选择?

时间:2010-10-07 03:46:35

标签: wpf datagrid selection clear

这是另一个网格中的一个简单任务,但我无法在WPF DataGrid中实现。有UnselectAll或UnselectAllCells方法,但不起作用。此外,设置SelectedItem = null或SelectedIndex = -1也不起作用。

这里有关于完全禁用选择的帖子,但这不是我想要的。我只想清除当前选择(如果有的话)并以编程方式设置新选择。

4 个答案:

答案 0 :(得分:20)

dataGrid.UnselectAll()

对于行模式

答案 1 :(得分:3)

要清除当前选择,您可以使用此代码(如您所见,无论模式是单一模式还是扩展模式,都会有所不同)

if(this.dataGrid1.SelectionUnit != DataGridSelectionUnit.FullRow)
    this.dataGrid1.SelectedCells.Clear();

if (this.dataGrid1.SelectionMode != DataGridSelectionMode.Single) //if the Extended mode
    this.dataGrid1.SelectedItems.Clear();
else 
    this.dataGrid1.SelectedItem = null;

要以编程方式选择新项目,请使用以下代码:

if (this.dataGrid1.SelectionMode != DataGridSelectionMode.Single) 
{    //for example, select first and third items
    var firstItem = this.dataGrid1.ItemsSource.OfType<object>().FirstOrDefault();
    var thirdItem = this.dataGrid1.ItemsSource.OfType<object>().Skip(2).FirstOrDefault();

    if(firstItem != null)
        this.dataGrid1.SelectedItems.Add(firstItem);
    if (thirdItem != null)
        this.dataGrid1.SelectedItems.Add(thirdItem);
}
else
    this.dataGrid1.SelectedItem = this.dataGrid1.ItemsSource.OfType<object>().FirstOrDefault(); //the first item

答案 2 :(得分:1)

禁用并重新启用DataGrid对我有用。

答案 3 :(得分:1)

DataGrid.UnselectAllCells()

它对我有用。