控件的内容是否有可能对其父级的视觉状态变化作出反应?
在以下示例中,当父控件处于活动状态时,我希望文本块的前景更改为红色。但是这段代码不起作用:
<local:ExpandKeyButton x:Name="xpand" Height="30">
<TextBlock x:Name="tb">
Test
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="General">
<VisualState x:Name="Idle" />
<VisualState x:Name="Active">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="tb" Storyboard.TargetProperty="Foreground">
<DiscreteObjectKeyFrame KeyTime="0" Value="Red" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</TextBlock>
</local:ExpandKeyButton>
答案 0 :(得分:1)
否 - 视觉状态是控件的内部状态,因为拥有ControlTemplate之外的UI元素不能(直接)参与视觉状态更改。我可以在你的场景中看到一些可能性:
Foreground="{Binding ElementName=xpand,Path=IsActive,Converter={StaticResource ActiveToColorConverter}}"
的绑定在控件处于活动状态时将其设置为红色。