2010-05-21 95 views
4

我试图创建一组具有关闭或打开状态的按钮,而没有检查的复选框很多。理想情况下,我希望颜色改变为代表两种不同的状态(红色),绿色(开启)。我试着设置一个控件模板,但这只会改变选择的颜色,一旦鼠标离开按钮的附近,它就会恢复为原来的颜色。WPF按钮打开或关闭着色状态

<ControlTemplate.Triggers> 
    <Trigger Property="IsPressed" Value="True"> 
     <Setter Property="Background" TargetName="Background" Value="Green"/> 
    </Trigger> 
</ControlTemplate.Triggers> 

回答

6

首先,你所描述的是一个ToggleButton。
其次,使用样式和触发器 “器isChecked”

<Style x:Key="MyToggleStyle" TargetType="{x:Type ToggleButton}"> 
<Style.Triggers> 
    <Trigger Property="IsChecked" Value="True"> 
    <Setter Property="Background" Value="Green"/> 
    </Trigger> 
    <Trigger Property="IsChecked" Value="False"> 
    <Setter Property="Background" Value="Red"/> 
    </Trigger> 
</Style.Triggers> 
</Style> 

here is a solution to a similar problem

+0

其实我觉得他想要的不是鼠标悬停,而是状态被按下。否则,我和你在一起:) – 2010-05-21 14:55:05

+0

ooops,你的权利。 – 2010-05-21 14:56:04

+0

Togglebutton好得多,虽然颜色仍然不起作用。 – wonea 2010-05-21 16:16:09

0

使用一些类似下面:

<Button> 
    ... 
    <Button.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding SomeField, Converter={StaticResource yourConverter}}" Value="yourValue"> 
        <!-- set what you want here --> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
0

实际上,可以使用复选框that.Allow我解释:

WPF让你定义控制模板,它基本上是整个控件本身。您可以创建一个完全像按钮的复选框。

但是,正如有人所说,ToggleButton可能是你想要使用的。