我是 WPF 和 MVVM 开发的新手。我正在使用 MVVMCross 框架,我想为数据网格编写自己的 AutoGenerateColumns 事件处理程序。我能想到的唯一方法是在后面的代码中,但我假设我可以在 ViewModel 中做到这一点。我有生成列的逻辑,但我不确定如何实际处理事件。
这里是代码的大体逻辑。我有 4 个带有 ItemsSource 绑定的 Datagrid,它们都来自同一个类继承的模型。我不想在 xaml 中单独写出每一行,因为有很多重复的列。
public void AutoGenerateColumns(string type)
{
List<string> columns = new List<string>();
switch (type)
{
case "type1":
columns = m_configHelper.type1Columns;
break;
case "type2":
columns = m_configHelper.type2Columns;
break;
case "type3":
columns = m_configHelper.type3Columns;
break;
case "type4":
columns = m_configHelper.type4Columns;
break;
default:
return;
}
foreach (string column in columns)
{
Columns.Add(new DataGridTextColumn
{
Header = m_configHelper.ColumnHeader(column + "_Header"),
Binding = new Binding(column),
Width = m_configHelper.ColumnWidth(column + "_Width")
});
}
}
我知道“public void”是不正确的,为了清楚起见,它主要只是作为占位符存在。