【发布时间】:2013-03-27 09:48:52
【问题描述】:
我已将DataTable 绑定到DataGrid 控件。如何以编程方式设置所选项目?
例子
在我的view model 中,我有一个 DataTable 类型的属性来绑定 DataGrid
private DataTable sizeQuantityTable;
public DataTable SizeQuantityTable
{
get
{
return sizeQuantityTable;
}
set
{
sizeQuantityTable = value;
NotifyPropertyChanged("SizeQuantityTable");
}
}
我的XAML
<DataGrid
ItemsSource="{Binding SizeQuantityTable}"
AutoGenerateColumns="True"
Margin="0,0,0,120" />
视图模型的constructor(分配虚拟值)
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);
好的。我创建了三列,即sizeQuantityColumn、sColumn 和mColumn,并添加了三行,即row1、row2 和row2。
所以,假设我想将选定的项目设置为row2(所以在视图中,第二行应该突出显示)。
我该怎么做?
编辑
我将 DataGrid 的 SelectedIndex 硬编码为 1。(所以应该选择第二行)。在design time 中,它显示为选中。但不是在运行时。您可以在下面的快照中看到它。
所以最终问题是没有突出显示该行。
【问题讨论】:
标签: wpf mvvm datagrid datatable