这是另一个网格中的一个简单任务,但我无法在WPF DataGrid中实现。有UnselectAll或UnselectAllCells方法,但不起作用。此外,设置SelectedItem = null或SelectedIndex = -1也不起作用。
这里有关于完全禁用选择的帖子,但这不是我想要的。我只想清除当前选择(如果有的话)并以编程方式设置新选择。
答案 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()
它对我有用。