5

我已经构建了一个扩展内容控件的自定义控件。在此,我有一个运行良好的零件和状态模型。

然后我将它用作我的 xaml 的根(将代码放在 Blend 的模板文件夹中)

一切正常,我可以打开一个新的“DaveControl”并获得我想要的功能。

但是,如果我在此处添加一些视觉状态,例如 alertOnScreen 并尝试使用 visualstatemanager 它不起作用。

事实上,没有列出任何州。

不过,SL3 GotoVisualState 中的行为工作正常!

如何让视觉状态在代码中工作?

4

2 回答 2

7

所以解决方案如下:使用扩展视觉状态管理器!

ExtendedVisualStateManager.GoToElementState(this.LayoutRoot as FrameworkElement, "OffScreen", true);

这是有效的,因为它需要一个框架元素......除此之外。 VisualStateManager.GoToState 的解决方法不在 Window 上工作

于 2010-01-13T11:39:16.350 回答
1

您是否已将可用状态集添加为TemplateVisualState类的一组属性?Blend 使用这些来配置其可用状态列表。

您的课程通常应如下所示:-

[TemplateVisualState(Name = "MyGroup1State1", GroupName = "MyGroup1")]
[TemplateVisualState(Name = "MyGroup1State2", GroupName = "MyGroup1")]
[TemplateVisualState(Name = "MyGroup2State1", GroupName = "MyGroup2")]
[TemplateVisualState(Name = "MyGroup2State2", GroupName = "MyGroup2")]
[TemplatePart(...)]
[TemplatePart(...)]
public class MyControl : ContentControl
于 2010-01-13T10:09:33.373 回答