2013-04-24 178 views
0

我试图实现一个自定义控件,它将根据3种不同的控件状态显示不同的内容。我已经通过添加一个状态和3个不同的内容属性来实现我的控制。具有多个ContentPresenter的自定义控件

我现在拥有的就是这样的东西。

  1. 用户设置CurrentState属性的,"Default""CurrentStep""Completed"之一。
  2. 控制器通过VisualStateManager切换到不同的视觉状态。
  3. 控制3个不同ContentPresenters上的默认模板集Visibility属性以显示单个内容。

这一切都没有问题。我正在努力做的是支持设计时间。我可以做的唯一事情是将ContentProperty属性设置为其中一个内容属性,以便Blend将该属性显示为控件树中的一个子项。但是,这使得只有一个内容属性可以在设计时编辑。

我还能做些什么来为我的控件添加设计时间支持?

回答

1

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

为了实现你想要做的事情,大多数时候,你使用命名部分创建一个控件(默认的winrt控件模板使用这个“命名的部分”机制)。 当您的自定义控件状态改变时,您只需显示/隐藏一个或多个指定部分。

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

+0

感谢您的回答。尽管我无法实现将TemplatedPart属性与我的控件配合使用。混合仍然没有回应。 – 2013-04-30 06:43:36

+0

TemplatePart属性有什么问题?也许如果你发布了一些代码,我将能够帮助你。 – Miiite 2013-05-06 09:10:43

相关问题