¿Cómo configurar el elemento seleccionado de un DataGrid mediante programación en WPF con la aplicación MVVM?
He atado elDataTable
alDataGrid
controlar. ¿Cómo puedo configurar el elemento seleccionadoprogramáticamente ?
Ejemplo
En miview model
Tengo una propiedad de tipo DataTable para enlazar el DataGrid
private DataTable sizeQuantityTable;
public DataTable SizeQuantityTable
{
get
{
return sizeQuantityTable;
}
set
{
sizeQuantityTable = value;
NotifyPropertyChanged("SizeQuantityTable");
}
}
MiXAML
<DataGrid
ItemsSource="{Binding SizeQuantityTable}"
AutoGenerateColumns="True"
Margin="0,0,0,120" />
losconstructor
del modelo de vista (asignando valores ficticios)
this.SizeQuantityTable = new DataTable();
DataColumn sizeQuantityColumn = new DataColumn();
sizeQuantityColumn.ColumnName = "Size Quantity";
this.SizeQuantityTable.Columns.Add(sizeQuantityColumn);
DataColumn sColumn = new DataColumn();
sColumn.ColumnName = "S";
this.SizeQuantityTable.Columns.Add(sColumn);
DataColumn mColumn = new DataColumn();
mColumn.ColumnName = "M";
this.SizeQuantityTable.Columns.Add(mColumn);
DataRow row1 = this.SizeQuantityTable.NewRow();
row1[sizeQuantityColumn] = "Blue";
row1[sColumn] = "12";
row1[mColumn] = "15";
this.SizeQuantityTable.Rows.Add(row1);
DataRow row2 = this.SizeQuantityTable.NewRow();
row2[sizeQuantityColumn] = "Red";
row2[sColumn] = "18";
row2[mColumn] = "21";
this.SizeQuantityTable.Rows.Add(row2);
DataRow row3 = this.SizeQuantityTable.NewRow();
row3[sizeQuantityColumn] = "Green";
row3[sColumn] = "24";
row3[mColumn] = "27";
this.SizeQuantityTable.Rows.Add(row3);
DE ACUERDO. He creado tres columnas a sabersizeQuantityColumn
, sColumn
ymColumn
y agregó tres filas a saberrow1
, row2
yrow2
.
Entonces, digamos que quiero configurar el elemento seleccionado comorow2
(Así que en la vista, la segunda fila debe estar resaltada).
¿Cómo puedo hacer esto?
EDITAR
Codifiqué elSelectedIndex
del DataGrid a 1. (Por lo tanto, la segunda fila debe seleccionarse). Endesign time
se muestra como seleccionado. Pero no en el tiempo de ejecución. Puedes verlo en la instantánea de abajo.
Así que, en definitiva, el problema esSin resaltar La fila.