dataGrid 中的嵌套列表绑定

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

我正在寻找一种将嵌套列表绑定到 DataGrid 以将它们显示在单独的列中的解决方案。

视图模型

public class ParametersDataGridViewModel : ViewModelBase
{
public ObservableCollection<Row> RowsList { get; set; } = new();
}
public class Row
{
        public string NameColumn { get; set; }
        public bool IsCheckedColumn { get; set; }
        public ObservableCollection<Values> ValuesColumns { get; set; } = new();
}
public class Values
    {
        public string ValueName { get; set; }
        public List<string> ValueValue { get; set; }
    }

我的目标是获取如下所示的 DataTable 作为示例数据:

RowsList.Add(new Row{NameColumn = Name1, IsCheckedColumn = TRUE, ValuesColumns = new Values{ValueName = "ValueName1", ValueValues = {1,2,3}});
RowsList.Add(new Row{NameColumn = Name2, IsCheckedColumn = FALSE, ValuesColumns = new Values{ValueName = "ValueName2", ValueValues = {4,221,231}});
RowsList.Add(new Row{NameColumn = Name3, IsCheckedColumn = TRUE, ValuesColumns = new Values{ValueName = "ValueName3", ValueValues = {34,43,213}});

desired result

到目前为止,我尝试了以下解决方案,但这不是我需要的,因为 ValuesColumns 的数量是可变的,我不想以这种方式声明它,因为列可能会动态添加或删除。

c# wpf xaml mvvm
1个回答
0
投票

感谢所有回复。提到的解决方案是很好的方向,但它们并没有完全涵盖我的例外情况。我想知道如何获取 Column Ischecked 值中的复选框。现在我正在通过字典。我已经检查过,可以将其更改为 Dictionary(在创建过程中,我可以将例如 Dictionary 和 Dictionary 添加到列表>),但不幸的是转换器会将其转换为字符串(DatTable 将显示 TextColumn 而不是 CheckBoxColumn)。我需要它,因为在我的最终表中,我希望将复选框或按钮绑定到 ViewModel 中的 ICommand,并作为参数传递整行。

© www.soinside.com 2019 - 2024. All rights reserved.