将项目添加到数据网格的集合中

时间:2019-05-09 14:45:02

标签: c# wpf mvvm

我来找你是因为我有一个问题(感到惊讶吗?)。

我目前正在使用包含多个对象的“矩阵”集合。当我在数据网格中显示它时,我需要一个附加数据,即一个复选框(以在数据网格中选择我的行)。 你能帮我吗?

        private ObservableCollection<Matrix> _Matrice;
    public ObservableCollection<Matrix> Matrice
    {
        get
        {
            return _Matrice;
        }
        set
        {
            if (value != _Matrice)
            {
                _Matrice = value;
                RaisePropertyChanged(nameof(Matrice));
            }
        }
    }

            Matrice = new ObservableCollection<Matrix>(await _dataService.GetMatrice(idMatrice));

“矩阵”包含我的数据(日期,名称等) 如果将其显示在数据网格中,则将显示所有数据。我只想添加一个“布尔”来使用一个复选框来选择网格行(例如,如果我检查第1行,第3行,第7行,则将它们添加到矩阵列表中)。

但是,尽管我进行了研究,但是在将新数据“添加”到集合中的过程中我还是有些失落。 例如“ foreach行>添加此布尔值。

非常感谢您!

2 个答案:

答案 0 :(得分:0)

您的班级矩阵是每行显示的内容。

那将成为每一行的数据上下文。

您将向Matrix添加一个公共bool属性,并使用datagridcheckboxcolumn绑定到该属性。

如果Matrix实际上是模型类,并且您无法更改其属性,则添加另一个类。 MatrixViewModel。添加与模型匹配的属性,再加上布尔值。将数据从模型类复制到视图模型。如果有很多属性,则可以使用反射或自动贴图。

答案 1 :(得分:0)

您可以在Datagrid列定义中添加“ DataGridCheckBoxColumn”:

<DataGrid ItemsSource="{Binding Matrice}>
  <DataGrid.Columns>
    <DataGridCheckBoxColumn Header="Check"/>
    <DataGridTextColumn Header="Name" Binding="{Binding name}"/>
  </DataGrid.Columns>
</DataGrid>