我正在尝试实现一个自定义控件,它将根据3种不同的控件状态显示不同的内容。我通过向我的控件添加状态和3个不同的内容属性来实现此目的。
我现在所拥有的就是那样。
CurrentState
属性设置为"Default"
,"CurrentStep"
或"Completed"
之一。VisualStateManager
切换到不同的视觉状态。Visibility
上的默认模板集ContentPresenters
属性,以显示单个内容。这一切都没有问题。我正在努力做的是实现设计时支持。我唯一能做的就是将ContentProperty
属性设置为其中一个内容属性,以便Blend在其控件树中将此属性显示为子属性。但是,这样只能在设计时编辑一个内容属性。
我还可以为控件添加设计时支持吗?
答案 0 :(得分:1)
我不会使用多个contentPresenter创建自定义控件。
要实现您要执行的操作,大多数情况下,您使用命名部件创建控件(默认的winrt控件模板使用此“命名部件”机制)。 当您的自定义控件状态更改时,您只需显示/隐藏一个或多个命名部件。
通过这种方式,您可以提供默认控件模板,包含您需要的所有命名部件,并自定义控件,覆盖默认模板,以及定义自己的部件。取决于状态的显示/隐藏逻辑将保持不变,但目标控件选择取决于编写模板的人。