首页 > 解决方案 > 指示状态的 WPF 自定义按钮

问题描述

我想创建一个启用某些选项的按钮,并在使用两个不同图像启用选项时显示。当按钮第一次被点击时,它变为 true 并且应该显示 image_true。当它再次被点击时,它应该回到 false 并显示 image_false。
我的第一个问题是:Button有闩锁动作,所以它被点击后又回到假。有没有办法改变这种行为?
如果不是,我可能只使用不同类型的元素,例如checkbox.

在这两种情况下:如何为两种状态分配不同的图像?

我知道如何按照此处的说明分配一张图像,但我真的不知道如何从那里继续将它们分配给不同的状态。

标签: c#wpf

解决方案


您可以通过使用包含 IsChecked 属性的三个状态(null、true、false)的 ToggleButton 来实现此目的,此外您需要编写控件模板并放置两个触发器(或三个用于所有先前状态),如下所示:

    <ToggleButton Width="75" Height="75" >
    <ToggleButton.Template>
        <ControlTemplate TargetType="ToggleButton">
            <Border Name="PART_Border">
                <Image Name="PART_Image"  ></Image>
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter TargetName="PART_Image" Property="Source">
                        <Setter.Value>
                            <BitmapImage  UriSource="/images/first.PNG" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
                <Trigger Property="IsChecked" Value="False">
                    <Setter TargetName="PART_Image" Property="Source">
                        <Setter.Value>
                            <BitmapImage UriSource="/images/second.PNG" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </ToggleButton.Template>
</ToggleButton>

之后,您需要将图像添加到您的项目中,并确保它们的构建操作(来自属性)是资源,您得到的最终结果是: 第一个状态 第二状态


推荐阅读