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