【发布时间】:2011-04-22 04:01:41
【问题描述】:
如何清除它?
有UnselectAll 或UnselectAllCells 方法,但它们不起作用。此外,设置SelectedItem = null 或SelectedIndex = -1 也不起作用。
我也不想完全禁用选择,我只想清除当前选择(如果有)并以编程方式设置新选择。
【问题讨论】:
如何清除它?
有UnselectAll 或UnselectAllCells 方法,但它们不起作用。此外,设置SelectedItem = null 或SelectedIndex = -1 也不起作用。
我也不想完全禁用选择,我只想清除当前选择(如果有)并以编程方式设置新选择。
【问题讨论】:
dataGrid.UnselectAll()
对于行模式
【讨论】:
要清除当前选择,您可以使用此代码(如您所见,模式是单模式还是扩展模式是不同的)
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
【讨论】:
SelectedItems.Clear 或SelectedItem = null。如果出现新的 SelectionMode 值,我认为应该重写这个 if-else。
DataGrid.UnselectAllCells()
它对我有用。
【讨论】:
禁用和重新启用 DataGrid 对我有用。
【讨论】:
您是否真的要清除选定行/单元格?
我的理解是你想清除整个DataGrid。
如果是这样,您可以这样做:
myDataGrid.ItemsSource = null;
【讨论】: