Wpf 在xaml中创建自定义VisualState,并在CodeBehind中手动设置

Wpf 在xaml中创建自定义VisualState,并在CodeBehind中手动设置,wpf,xaml,coding-style,Wpf,Xaml,Coding Style,我有一个TabItem样式,它有可视状态 <VisualState x:Name="MouseOver"> <!-- Tab turns bronze when mouseover --> </VisualState> 你试过了吗 VisualStateManager.gostate 获取一个控件、一个带有自定义状态名的字符串和一个用于使用转换的bool标志 来自的示例用法 private void UpdateStates(bool-usetransfo

我有一个TabItem样式,它有可视状态

<VisualState x:Name="MouseOver"> 
<!-- Tab turns bronze when mouseover -->
</VisualState>
你试过了吗
VisualStateManager.gostate

获取一个控件、一个带有自定义状态名的字符串和一个用于使用转换的bool标志

来自的示例用法
private void UpdateStates(bool-usetransformations)
{
如果(值>=0)
{
VisualStateManager.GoToState(此为“正”,使用转换);
}
其他的
{
VisualStateManager.GoToState(此为“负”,使用转换);
}
如果(聚焦)
{
VisualStateManager.GoToState(这是“聚焦的”,使用转换);
}
其他的
{
VisualStateManager.GoToState(此为“未聚焦”,使用转换);
}
}

一个稍微复杂一些的用法示例 考虑到这个xaml


改变状态可以这样做

VisualStateManager.GoToState(这个,SG1EllipseRight.Name,true);
或者

VisualStateManager.gostate(控件“SG1EllipseRight”,true);
试试这个

VisualStateManager.GoToElementState(Control, "StateName", true/false);

VisualStateManager还允许您指定控件 进入特定状态。应该调用以进行更改的方法 状态取决于您的场景。如果创建的控件使用 VisualStateManager在其ControlTemplate中调用GoToState方法。 有关如何创建使用 VisualStateManager,请参见创建具有可自定义 外表。如果在外部使用VisualStateManager ControlTemplate(例如,如果在 在单个元素中,调用GoToElementState方法。 在任何一种情况下,VisualStateManager都会执行以下逻辑: 需要适当地启动和停止 与所涉国家有关


这就是GoToElementStateGoToState

之间的不同之处,更新后包含文章中的示例(带有更新的链接)和mdsn示例谢谢@Terrance
MyTabItem.VisualState = CustomVisualState.  //something like this
VisualStateManager.GoToElementState(Control, "StateName", true/false);
VisualStateManager.GoToState(Control, "StateName", true/false);