单击WPF更改按钮背景

SZT*_*SZT 1 c# wpf wpf-style

我在侧面板上有一组按钮.我想更改已单击按钮的背景.我试图使用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因为我的属性随着按钮的选择而变化,但这看起来像是一种矫枉过正.任何想法如何突出显示已单击的按钮?

Max*_*mus 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>
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)

  • 您可以为所有按钮创建一种样式或将一种样式应用于多个按钮,而不是在每个按钮中创建新样式。 (2认同)