我试图在单击按钮时更改按钮的字体颜色。我尝试了很多不同的东西,但没有一个奏效。这是我尝试过的最新方法,我认为应该是答案,但它不起作用。有人可以帮忙吗?PointerOver 工作正常,但在单击按钮时 Focused 不执行任何操作。
<Style x:Key="ButtonStyle" TargetType="Button">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="FontWeight" Value="Normal" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid
x:Name="RootGrid"
Background="{TemplateBinding Background}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="PointerOver">
<VisualState.Setters>
<Setter Target="ContentPresenter.FontWeight" Value="Bold" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Pressed"/>
<VisualState x:Name="Focused">
<VisualState.Setters>
<Setter Target="ContentPresenter.Foreground" Value="Purple" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Disabled">
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter
x:Name="ContentPresenter"
Content="{TemplateBinding Content}"
ContentTransitions="{TemplateBinding ContentTransitions}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
根据评论进行编辑:添加说明 - 我在发布此问题之前尝试使用 Pressed,但它没有做我想要的。单击后,我希望颜色保持应用直到单击另一个按钮,然后单击的新按钮中的文本将更改颜色,单击的上一个按钮将恢复为默认颜色。按下后,只要您松开鼠标按钮,文本就会恢复为默认值。
基于编辑的答案建议:还提供周围代码以查看是否在其他地方犯了错误。
<Page.Resources>
<Style x:Key="ButtonStyle" …Run Code Online (Sandbox Code Playgroud) 如何使用视觉状态更改对象的Canvas.Zindex?我本以期能够做到这样的事情......
<VisualState x:Name="MyVisualState">
<VisualState.Setters>
<Setter Target="MyObject.Visibility" Value="Visible" />
<Setter Target="MyObject.Background" Value="Transparent" />
<Setter Target="MyObject.Canvas.ZIndex" Value="12" />
</VisualState.Setters>
</VisualState>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我还没有找到任何关于如何做到这一点的例子.有人可以帮忙吗?