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