我有一个带有一些按钮的包裹面板。按下按钮时,背景变为红色,否则背景是透明的。如果我按下另一个按钮,前一个按钮的背景应该变为透明,最近按下的按钮的背景应该变为红色。我怎么能实现这个?
答案 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;
}
}
在表单上放置两个按钮,将它们连接到同一事件。
希望这会有所帮助。