WPF 按钮的开启或关闭状态颜色化

4
我正在尝试创建一组具有开关状态的按钮,就像没有检查框的复选框。理想情况下,我希望颜色可以改变以表示两种不同的状态:关闭(红色)和打开(绿色)。我尝试设置控件模板,但这仅在选择时更改颜色,一旦鼠标离开按钮附近,它就会恢复原来的颜色。
<ControlTemplate.Triggers>
   <Trigger Property="IsPressed" Value="True">
      <Setter Property="Background" TargetName="Background" Value="Green"/>
   </Trigger>
</ControlTemplate.Triggers>
3个回答

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>

这里有一个类似问题的解决方案

该解决方案与WPF中切换按钮状态的自定义有关。

其实,我认为他想要的不是鼠标悬停,而是状态被按下。否则,我同意你的看法 :) - David Brunelle
Togglebutton 更好,不过颜色仍然不能正常工作。 - wonea

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

实际上,可以使用复选框来实现这个功能。让我解释一下:

WPF 允许您定义控件模板,这基本上就是整个控件本身。您可以创建一个看起来完全像按钮的复选框。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,