将customObject绑定到DataGrid

时间:2015-06-17 09:18:41

标签: c# wpf data-binding datagrid

此处讨论了将对象列表绑定到DataGrid的基础知识How do I bind a List<CustomObject> to a WPF DataGrid?

我的设置稍微复杂一些: 我有RowModels,其中包含该行的元数据以及CellModels的列表。 CellModels再次包含一些元数据和Value属性,该属性显示在dataGrid中。

为了填充我的DataGrid,我确实设置了

ItemsSource="{Binding RowModelList, UpdateSourceTrigger= PropertyChanged}"

并通过

逐列映射列
<DataGridTextColumn Binding="{Binding CellModelList[0].Value, UpdateSourceTrigger= PropertyChanged}"/>
<DataGridTextColumn Binding="{Binding CellModelList[1].Value, UpdateSourceTrigger= PropertyChanged}"/>
...

这样我也可以为每列指定ColumnHeader并修改每列的表示。

但是我想在我的DataTrigger - 样式中使用DataGridCell来访问我的CellModel的元数据。

这有效,但是......好

当然我可以为每一列创建一个样式,如

<Style x:Key="CellStyleColumnZero" TargetType="DataGridCell">
    <Style.Triggers>
        <DataTrigger Binding="{Binding CellModelList[0].Enabled}" Value="False">
            <Setter Property="IsEnabled" Value="False"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

问题:

我需要根据DataGridCell中的元数据设置CellModel的属性。

我确信有一个更优雅的解决方案(比上面显示的解决方案)不需要自定义每一列。我仍然需要能够手动更改单个列(尤其是ColumnHeaders),这就是我首先手动逐个手动声明DataGridTextColumns的原因。

您对如何正确处理此问题有任何建议吗?

1 个答案:

答案 0 :(得分:0)

这是在后续问题中回答的。

我使用的解决方案是为DataGridCell创建一个附加属性,我在其中存储CellModel并从那里访问属性。

查看代码的链接问题: Structure of WPF DataGrid - change cells depending on value