如何使用 MVVMCross 自定义 DataGrid AutoGenerateColumns()

问题描述 投票:0回答:0

我是 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”是不正确的,为了清楚起见,它主要只是作为占位符存在。

c# datagrid mvvmcross
© www.soinside.com 2019 - 2024. All rights reserved.