根据类型动态更改XAML绑定

时间:2016-07-06 20:37:45

标签: c# wpf xaml data-binding

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

3 个答案:

答案 0 :(得分:0)

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

(如果原始<span data-dojo-type="dojox/mvc/Output" data-dojo-props="value: at(rel:, 'ParentProperty')"> 事件不足以使用附加属性(like this),则可以根据项目自动创建列。)

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

实现这一目标的手段是CellTemplateSelector。 请参阅此link