[英]Design dynamic row header, column header and content in MVVM
我想有一個itemsource,它提供對MVVM模式中的列標題,行標題及其內容的綁定。 我已經嘗試過DataTable,但是,我不知道如何填充行標題。 是否可以在添加DataRow期間填充行標題?
DataRow dr = new DataRow();
dr.ItemArray = current.Split(new char[] { '\t' });
// add row header?
請幫忙。
這就是你想要的嗎?
XAML代碼:
<Grid>
<DataGrid Name="SimpleDataGrid" AutoGenerateColumns="True" ItemsSource="{Binding}" />
</Grid>
創建新的數據行:
private void CreateNewDataRow()
{
// Use the MakeTable function below to create a new table.
DataTable table;
table = MakeNamesTable();
// Once a table has been created, use the
// NewRow to create a DataRow.
DataRow row;
row = table.NewRow();
// Then add the new row to the collection.
row["fName"] = "John";
row["lName"] = "Smith";
table.Rows.Add(row);
foreach (DataColumn column in table.Columns)
{
Console.WriteLine(column.ColumnName);
}
SimpleDataGrid.DataContext = table;
}
創建新列:
private DataTable MakeNamesTable()
{
// Create a new DataTable titled 'Names.'
DataTable namesTable = new DataTable("Names");
// Add three column objects to the table.
DataColumn idColumn = new DataColumn();
idColumn.DataType = System.Type.GetType("System.Int32");
idColumn.ColumnName = "id";
idColumn.AutoIncrement = true;
namesTable.Columns.Add(idColumn);
DataColumn fNameColumn = new DataColumn();
fNameColumn.DataType = System.Type.GetType("System.String");
fNameColumn.ColumnName = "Fname";
fNameColumn.DefaultValue = "Fname";
namesTable.Columns.Add(fNameColumn);
DataColumn lNameColumn = new DataColumn();
lNameColumn.DataType = System.Type.GetType("System.String");
lNameColumn.ColumnName = "LName";
namesTable.Columns.Add(lNameColumn);
// Create an array for DataColumn objects.
DataColumn[] keys = new DataColumn[1];
keys[0] = idColumn;
namesTable.PrimaryKey = keys;
// Return the new DataTable.
return namesTable;
}
調用CreatingNewDataRow():
public MainWindow()
{
InitializeComponent();
CreateNewDataRow();
}
有關更多信息,請參見:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.