WPF DataTemplate绑定取决于属性的类型
我有一组绑定到分层数据模板的对象,我的每个对象都有一个属性(我们称之为属性“A”)属于某种类型。 这种类型在每个对象之间变化。
如果数据模板包含图像和某些文本,那么根据属性“A”的类型更改模板中显示的图像的最佳方法是什么。
我知道我可以把它放到转换器中并在代码中手动进行绑定转换,但是在WPF中提供了所有绑定工具,我认为这可能是更好的方法。
如果您创建本地数据模板并使用ContentPresenter
,则在数据模板中执行此操作非常简单。 此模板显示MyObject
类型的对象,显示一个图像,其源由TextBlock
旁边的A
属性的类型确定,该TextBlock
显示Text
属性的内容:
如果你想使用样式代替这样做,你将遇到问题,因为数据触发器想要查看属性值,而A
属性的类型本身不作为属性公开。
当然,除非你实施一个:
public Type AType { get { return A.GetType(); } }
(当A
的值发生变化时,您还需要为AType
引发PropertyChanged
。)一旦完成此操作,您应该能够在样式中实现数据触发器,例如:
我想你可以用触发器做到这一点。
DataTemplateSelector
似乎不是一个好选择,因为您对A
所有值都有相同的模板。
使用DataTriggers
:
Your text
没有测试过,但想法就是这样。