我有一个TabItem样式,它有VisualStates。
<VisualState x:Name="MouseOver">
<!-- Tab turns bronze when mouseover -->
</VisualState>
现在我希望拥有一个自定义的可视状态,并在代码隐藏中手动设置状态,而不是依赖于MouseOver事件。
<VisualState x:Name="CustomVisualState">
<!-- this will be a storyboard to cause flashing -->
</VisualState>
然后我需要在CodeBehind中设置它。
MyTabItem.VisualState = CustomVisualState. //something like this
答案 0 :(得分:14)
您是否尝试过VisualStateManager.GoToState(Control,"stateName",UseTransition);采取控件,使用自定义状态名称的字符串和使用过渡的bool标志。
Addtional Example here
答案 1 :(得分:1)
试试这个,
VisualStateManager.GoToElementState(Control, "StateName", true/false);
或
VisualStateManager.GoToState(Control, "StateName", true/false);
答案 2 :(得分:0)
VisualStateManager还使您可以指定控件的时间 进入特定状态。您应调用的更改方法 状态取决于您的情况。如果您创建使用 在VisualStateManager的ControlTemplate中,调用GoToState方法。 有关如何创建使用 VisualStateManager,请参阅创建具有可自定义的控件 出现。如果您在 ControlTemplate(例如,如果您在 UserControl或在单个元素中),调用GoToElementState方法。 无论哪种情况,VisualStateManager都会执行以下逻辑: 需要适当地启动和停止故事板 与所涉及的状态相关联。 -VisualStateManager Class
这是 GoToElementState 和 GoToState 之间的区别。