根据类型动态更改 XAML 绑定

本文关键字:XAML 绑定 动态 类型 | 更新日期: 2023-09-27 17:55:20

我有一个用作 DataGrid 源的对象列表。此对象列表是一个基类类型,其中有 2 个或更多继承类型。我正在尝试绑定到基类的属性,以在 DataGrid 的列中显示为值。子类具有不同的可用属性,我希望能够显示这些属性,所以我的问题是,XAML 是否有办法根据指向的类型动态更改绑定的值?我已经考虑过可能使用转换器来执行此操作,但是如果我理解正确,那么我将不得不为需要绑定的每个子类属性编写一个不同的转换器。任何意见或建议不胜感激。谢谢

根据类型动态更改 XAML 绑定

这可能是可能的,通过属性和一些反射,您可以标记应该进入各个列的属性,然后自动生成这些属性。您还可以创建一个稀疏网格,其中包含所有可能属性的列;这也应该可以通过反射实现,并且不需要任何其他元数据。

(如果本机 DataGrid 事件不足以满足此目的,则可以使用附加属性(如下所示)基于项自动创建列。

可以通过 DataType 属性定义多个 DataTemplate 并指定预期类型。将根据绑定对象的类型选择正确的模板。

https://msdn.microsoft.com/en-us/library/system.windows.datatemplate.datatype(v=vs.110).aspx

实现这一点的方法是一个CellTemplateSelector。请参阅此链接。