单击WPF更改按钮背景

时间:2014-08-20 21:23:40

标签: c# wpf wpf-style

侧面板上有一组按钮。我想更改已单击按钮的背景。我试图使用style.trigger做到这一点,我唯一能想到的属性是IsPressed,但这并没有多大帮助,因为它改变了背景一秒钟(直到按下按钮为止[咄])。

这是我尝试过的代码:

<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
    <Setter Property="Background" Value="SlateGray" />
    <Setter Property="Foreground" Value="White"></Setter>
</Trigger>
</Style.Triggers>

我能想到的另一种方法是使用datatrigger为每个按钮创建单独的样式,因为我有一个随按钮选择而变化的属性,但这似乎有点矫枉过正。不知道如何突出显示已点击的按钮?

1 个答案:

答案 0 :(得分:9)

当您的条件满足时,此类触发器会运行,然后效果消失。为了设置好而不是一会儿看看这个

<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>

由于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>