将自定义对象绑定到 DataGrid
Bind customObject to DataGrid
此处讨论了将对象列表绑定到 DataGrid 的基础知识 How do I bind a List<CustomObject> to a WPF DataGrid?。
我的设置稍微复杂一些:
我有 RowModels
,其中包含该行的元数据以及 CellModels
的列表。 CellModels
再次包含一些元数据和一个显示在数据网格中的 Value
属性。
为了填充我的 DataGrid,我设置了
ItemsSource="{Binding RowModelList, UpdateSourceTrigger= PropertyChanged}"
并通过
逐一映射列
<DataGridTextColumn Binding="{Binding CellModelList[0].Value, UpdateSourceTrigger= PropertyChanged}"/>
<DataGridTextColumn Binding="{Binding CellModelList[1].Value, UpdateSourceTrigger= PropertyChanged}"/>
...
这样我还可以为每列指定一个 ColumnHeader 并修改每列的显示方式。
但是我还想在我的 DataGridCell
样式中使用 DataTrigger
来访问我的 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>
问题:
我需要根据 CellModel
中的元数据设置 DataGridCell
的属性。
我相信有一个更优雅的解决方案(比上面显示的解决方案)不需要自定义每一列。我仍然需要能够手动更改单个列(尤其是 ColumnHeaders
),这就是为什么我首先逐个手动声明 DataGridTextColumns 的原因。
您对如何正确处理这个问题有什么建议吗?
这在后续问题中得到了回答。
我使用的解决方案是为 DataGridCell
创建附加的 属性,我在其中存储 CellModel 并从那里访问属性。
查看代码的链接问题:
此处讨论了将对象列表绑定到 DataGrid 的基础知识 How do I bind a List<CustomObject> to a WPF DataGrid?。
我的设置稍微复杂一些:
我有 RowModels
,其中包含该行的元数据以及 CellModels
的列表。 CellModels
再次包含一些元数据和一个显示在数据网格中的 Value
属性。
为了填充我的 DataGrid,我设置了
ItemsSource="{Binding RowModelList, UpdateSourceTrigger= PropertyChanged}"
并通过
逐一映射列<DataGridTextColumn Binding="{Binding CellModelList[0].Value, UpdateSourceTrigger= PropertyChanged}"/>
<DataGridTextColumn Binding="{Binding CellModelList[1].Value, UpdateSourceTrigger= PropertyChanged}"/>
...
这样我还可以为每列指定一个 ColumnHeader 并修改每列的显示方式。
但是我还想在我的 DataGridCell
样式中使用 DataTrigger
来访问我的 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>
问题:
我需要根据 CellModel
中的元数据设置 DataGridCell
的属性。
我相信有一个更优雅的解决方案(比上面显示的解决方案)不需要自定义每一列。我仍然需要能够手动更改单个列(尤其是 ColumnHeaders
),这就是为什么我首先逐个手动声明 DataGridTextColumns 的原因。
您对如何正确处理这个问题有什么建议吗?
这在后续问题中得到了回答。
我使用的解决方案是为 DataGridCell
创建附加的 属性,我在其中存储 CellModel 并从那里访问属性。
查看代码的链接问题: