【发布时间】:2012-10-25 11:26:02
【问题描述】:
我正在尝试创建一个自定义 WPF 控件,该控件具有多个 UI 元素以在不同时间在不同情况下显示,因此无法在同一个可视化树中明智地创建它们。我为每个元素创建了依赖属性,类型为UIElement。这很好用。
在样式控制方面,它的效果并不好。虽然我可以为设置自定义属性的控件定义样式,但该样式只实例化一次。因此,如果我的自定义控件的多个实例使用相同的样式,则只有最后一个要定义的实例才能获得可视化树。我知道这是因为样式直接设置UIElement 而不是使用模板,并且模板基础结构在其中定义了树的多个实例(请参阅https://stackoverflow.com/a/8702180/1453269)
我的问题是,我如何定义一个采用多个模板的控件,以便应用它们?我尝试创建 DataTemplate 类型的依赖对象。如果我使用ContentPresenter 来显示模板,它只会将 DataTemplate 的类型名称显示为文本。我希望它以与 WPF 的其余部分一致的方式将模板值应用于我的第一个依赖项属性。我曾假设有一种方法可以利用 WPF 中的模板基础结构,但我找不到如何做到这一点。
【问题讨论】:
标签: .net wpf controls datatemplate