Gewusst wie: Festlegen des ausgewählten Elements eines DataGrid in WPF mit MVVM-Anwendung programmgesteuert?
Ich habe die gebundenDataTable
zumDataGrid
Steuerung. Wie kann ich das ausgewählte Element einstellen?programmatisch ?
Beispiel
In meinemview model
Ich habe eine Eigenschaft vom Typ DataTable, um das DataGrid zu binden
private DataTable sizeQuantityTable;
public DataTable SizeQuantityTable
{
get
{
return sizeQuantityTable;
}
set
{
sizeQuantityTable = value;
NotifyPropertyChanged("SizeQuantityTable");
}
}
MeineXAML
<DataGrid
ItemsSource="{Binding SizeQuantityTable}"
AutoGenerateColumns="True"
Margin="0,0,0,120" />
Dasconstructor
des View-Modells (Zuweisen von Dummy-Werten)
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);
OK. Ich habe nämlich drei Spalten angelegtsizeQuantityColumn
, sColumn
undmColumn
und fügte hinzu, nämlich drei Zeilenrow1
, row2
undrow2
.
Nehmen wir also an, ich möchte das ausgewählte Element als festlegenrow2
(In der Ansicht sollte also die zweite Zeile markiert sein).
Wie kann ich das machen?
BEARBEITEN
Ich habe dieSelectedIndex
des DataGrid auf 1. (also sollte die zweite Zeile ausgewählt sein). Imdesign time
Es wird als ausgewählt angezeigt. Aber nicht zur Laufzeit. Sie können es in der folgenden Momentaufnahme sehen.
Das ultimative Problem ist alsoNicht hervorheben die Reihe.