我在侧面板上有一组按钮.我想更改已单击按钮的背景.我试图使用style.trigger和我能想到的唯一属性IsPressed,但这没有多大帮助,因为它改变了背景一秒钟(直到按下按钮[duh]).
这是我试过的代码:
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="SlateGray" />
<Setter Property="Foreground" Value="White"></Setter>
</Trigger>
</Style.Triggers>
Run Code Online (Sandbox Code Playgroud)
我能想到的另一种方法是为每个按钮创建单独的样式,datatrigger因为我的属性随着按钮的选择而变化,但这看起来像是一种矫枉过正.任何想法如何突出显示已单击的按钮?
这种触发器在您的条件满足后运行,然后效果消失.为了好好而不是一会儿就看看这个
<Button Content="Content" Background="Red">
<Button.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="CadetBlue"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
Run Code Online (Sandbox Code Playgroud)
由于IsPressed不是RoutedEvent,您可以使用它
<Button Content="Content" Background="Red">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="CadetBlue"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)