<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" />
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,DataGrid 列在 XAML 中进行了硬编码。
是否可以在其他地方定义列定义,最好是在 MVVM 视图模型中,以便可以动态定义和重新定义列?
DataGrid按以下方式使用 Microsoft和 MVVM 模式对我来说很有效,因为它DataGrid会根据DataTable.
在 XAML 中我包括DataGrid:
<WpfToolkit:DataGrid
ItemsSource="{Binding Path=GridData, Mode=OneWay}" >
</WpfToolkit:DataGrid>
Run Code Online (Sandbox Code Playgroud)
在我的视图模型中,我公开了DataView:
public DataView GridData
{
get
{
DataSet ds = new DataSet("MyDataSet");
// everything hard-coded for this example
int to = 12;
int ps = 2048;
string sv = "10";
string st = "Open";
string wsid = "ZAMBONI";
DataTable dt = new DataTable("MyDataTable");
DataColumn propertyName = new DataColumn("Property");
DataColumn propertyValue = new DataColumn("Value");
dt.Columns.Add(propertyName);
dt.Columns.Add(propertyValue);
dt.Rows.Add("Connection timeout", to);
dt.Rows.Add("Packet size", ps);
dt.Rows.Add("Server version", sv);
dt.Rows.Add("State", st);
dt.Rows.Add("Worksation id", wsid);
ds.Tables.Add(dt);
return ds.Tables[0].DefaultView;
}
}
Run Code Online (Sandbox Code Playgroud)
当然有可能。
我考虑了超过 5 秒,但您可以这样做: 1. 为数据网格定义一个附加属性,当设置为 true 时,您将在事件触发时注册到网格加载事件,您将从 sender 参数中提取他的上下文,然后将他发送到一个用列填充他的方法。
| 归档时间: |
|
| 查看次数: |
7050 次 |
| 最近记录: |