WPF自定义按钮,指示状态

时间:2018-04-27 05:48:34

标签: c# wpf

如果使用两个不同的图像启用选项,我想创建一个启用某些选项和显示的按钮。单击按钮时,第一次转到true并应显示image_true。当它再次被点击时,它应该返回false并显示image_false 我的第一个问题是:Button具有锁定操作,因此在单击后它会返回false。有没有办法改变这种行为?
如果不是,我可能会使用不同类型的元素,例如checkbox

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

我知道如何按照here的说明分配一个图像,但我真的不知道如何继续将它们分配到不同的状态。

1 个答案:

答案 0 :(得分:4)

你可以通过使用ToggleButton实现这一点,它包含IsChecked属性的三个状态(null,true,false),除此之外你需要编写控制模板并放置两个触发器(或者所有以前的状态为三个),如下所示: / p>

    <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>

之后,您需要将图像添加到项目中并确保它们的构建操作(来自属性)是Resources,并且您获得的最终结果是: First state Second state