我已经构建了一个扩展内容控件的自定义控件。在此,我有一个运行良好的零件和状态模型。
然后我将它用作我的 xaml 的根(将代码放在 Blend 的模板文件夹中)
一切正常,我可以打开一个新的“DaveControl”并获得我想要的功能。
但是,如果我在此处添加一些视觉状态,例如 alertOnScreen 并尝试使用 visualstatemanager 它不起作用。
事实上,没有列出任何州。
不过,SL3 GotoVisualState 中的行为工作正常!
如何让视觉状态在代码中工作?
我已经构建了一个扩展内容控件的自定义控件。在此,我有一个运行良好的零件和状态模型。
然后我将它用作我的 xaml 的根(将代码放在 Blend 的模板文件夹中)
一切正常,我可以打开一个新的“DaveControl”并获得我想要的功能。
但是,如果我在此处添加一些视觉状态,例如 alertOnScreen 并尝试使用 visualstatemanager 它不起作用。
事实上,没有列出任何州。
不过,SL3 GotoVisualState 中的行为工作正常!
如何让视觉状态在代码中工作?
所以解决方案如下:使用扩展视觉状态管理器!
ExtendedVisualStateManager.GoToElementState(this.LayoutRoot as FrameworkElement, "OffScreen", true);
这是有效的,因为它需要一个框架元素......除此之外。 VisualStateManager.GoToState 的解决方法不在 Window 上工作
您是否已将可用状态集添加为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