我在 ContentPresenter 中有一个名为“PART_closeButton”的按钮。我正在为我的按钮定义一些视觉状态。
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation Duration="0" To="1"
Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="PART_closeButton" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Normal">
<Storyboard>
<DoubleAnimation Duration="0" To="0.7" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="PARTcloseButton" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
所以一切都为我工作。当我将鼠标悬停在按钮上时,它变得半透明。但是,如果我为 contentpresenter 加载一些数据模板,其中还包含同名按钮,则视觉状态不再反应。(mouseOver 事件也为该按钮处理并触发)。goToState 不工作。我知道实际的按钮对象正在改变,VisualState 与具有 TargetName 的按钮连接。所以新按钮具有相同的名称,为什么状态管理器不起作用?