创建一个按钮,当按下另一个按钮时,其背景会改变

本文关键字:按钮 另一个 改变 背景 创建 一个 | 更新日期: 2023-09-27 18:10:22

我有一个带有一些按钮的换行面板。当按下按钮时,背景变为红色,否则背景是透明的。如果我按下另一个按钮,上一个按钮的背景应该变成透明,最近按下的按钮的背景应该变成红色。我怎样才能做到这一点??

创建一个按钮,当按下另一个按钮时,其背景会改变

我相信有很多方法可以做到这一点!一种方法是使用DataTrigger

要做到这一点,您需要将按钮的command属性绑定到一个命令,该命令的Execute函数在视图模型中设置一个变量:
<Button Command="{Binding SetButton1Command}"/>
<Button Command="{Binding SetButton2Command}"/>

这些函数可以做一些简单的事情,比如切换bool值。我假设您这样做,因为只有两个按钮。更多的按钮将需要一个enum或其他东西(或者只是使用RadioButton,这整个事情变得容易得多)。

设置了bool属性后,我将使用DataTrigger设置背景:

<Button Command="{Binding SetButton1Command}"/>
    <Button.Style>
      <Style>
         <Style.Triggers>
            <DataTrigger Binding="{Binding Path=FlagProperty}" Value="True">
               <Setter Property="Foreground" Value="Red" />
            </DataTrigger>
         </Style.Triggers>
      </Style>
    <Button.Style>
</Button>

如果你使用RadioButton(我推荐的东西),你只是触发"IsChecked"被改变(与RelativeSource或ElementName绑定)。

这适用于winforms,但也适用于webforms。

    private void button1_Click(object sender, EventArgs e)
    {
        Button btn = (Button)sender;
        if (btn.Name == "button1")
        { 
            button1.BackColor = Color.Red;
            button2.BackColor = Color.Transparent;
        }
        else
        {
            button1.BackColor = Color.Transparent;
            button2.BackColor = Color.Red;
        }
    }

在一个表单上放置两个按钮,将它们连接到同一个事件。