gpt4 book ai didi

c# - 将自定义对象绑定(bind)到 DataGrid

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:57 24 4
gpt4 key购买 nike

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

我的设置稍微复杂一些:我有 RowModels,其中包含行的元数据以及 CellModels 列表。 CellModels 再次包含一些元数据和一个显示在 dataGrid 中的 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 并从那里访问属性。

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

关于c# - 将自定义对象绑定(bind)到 DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30887303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com