2010-10-07 20 views
8

Es una tarea simple en otra grilla, pero no puedo hacerlo en WPF DataGrid. Hay métodos UnselectAll o UnselectAllCells, pero no funcionan. Además, establecer SelectedItem = null o SelectedIndex = -1 tampoco funciona.WPF DataGrid: ¿Cómo borrar la selección programáticamente?

Aquí hay una publicación sobre desactivar completamente la selección, pero eso no es lo que quiero. Solo quiero borrar la selección actual (si corresponde) y establecer una nueva selección mediante programación.

Respuesta

3

Para borrar la selección actual, puede utilizar este código (como se ve es diferente si el modo es simple o extendido)

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; 

Para seleccionar nuevos artículos programación, utilice este código:

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 
+0

En realidad, no funciona bien. – newman

+0

@miliu Sí, mi código anterior no era correcto. Arreglé mi respuesta. – vorrtex

+0

@ vortex: No sé si hice algo mal, pero este nuevo código para borrar la selección tampoco funciona para mí. Estoy usando este código en el evento MouseDoubleClick. – newman

1

Desactivar y volver a habilitar el DataGrid funcionó para mí.

+0

Gracias. Trabajó para mí también. – Pking

1
DataGrid.UnselectAllCells() 

Funciona para mí.

19
dataGrid.UnselectAll() 

Para el modo filas