在xaml中创建自定义Visual State并在Code Behind中手动设置它

时间:2011-10-20 16:39:21

标签: wpf xaml coding-style

我有一个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

3 个答案:

答案 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 之间的区别。