按下另一个按钮时,创建一个背景发生变化的按钮

时间:2014-06-26 17:54:33

标签: c# wpf xaml

我有一个带有一些按钮的包裹面板。按下按钮时,背景变为红色,否则背景是透明的。如果我按下另一个按钮,前一个按钮的背景应该变为透明,最近按下的按钮的背景应该变为红色。我怎么能实现这个?

2 个答案:

答案 0 :(得分:0)

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

为此,您可以将按钮的command属性绑定到Execute函数在视图模型中设置变量的命令:

<Button Command="{Binding SetButton1Command}"/>
<Button Command="{Binding SetButton2Command}"/>

这些功能可以做一些简单的事情,比如切换一个bool。我假设你这样做,因为只有两个按钮。更多的按钮需要一个枚举或其他东西(或者只需使用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绑定)。

答案 1 :(得分:-1)

这适用于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;
        }
    }

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

希望这会有所帮助。