具有多个ContentPresenters的自定义控件

时间:2013-04-24 14:31:05

标签: xaml windows-8 winrt-xaml expression-blend custom-component

我正在尝试实现一个自定义控件,它将根据3种不同的控件状态显示不同的内容。我通过向我的控件添加状态和3个不同的内容属性来实现此目的。

我现在所拥有的就是那样。

  1. 用户将CurrentState属性设置为"Default""CurrentStep""Completed"之一。
  2. 控件通过VisualStateManager切换到不同的视觉状态。
  3. 控制3个不同Visibility上的默认模板集ContentPresenters属性,以显示单个内容。
  4. 这一切都没有问题。我正在努力做的是实现设计时支持。我唯一能做的就是将ContentProperty属性设置为其中一个内容属性,以便Blend在其控件树中将此属性显示为子属性。但是,这样只能在设计时编辑一个内容属性。

    我还可以为控件添加设计时支持吗?

1 个答案:

答案 0 :(得分:1)

我不会使用多个contentPresenter创建自定义控件。

要实现您要执行的操作,大多数情况下,您使用命名部件创建控件(默认的winrt控件模板使用此“命名部件”机制)。 当您的自定义控件状态更改时,您只需显示/隐藏一个或多个命名部件。

通过这种方式,您可以提供默认控件模板,包含您需要的所有命名部件,并自定义控件,覆盖默认模板,以及定义自己的部件。取决于状态的显示/隐藏逻辑将保持不变,但目标控件选择取决于编写模板的人。

相关问题