代码之家  ›  专栏  ›  技术社区  ›  Pete

指示状态的WPF自定义按钮

  •  0
  • Pete  · 技术社区  · 6 年前

    我想创建一个按钮,用于启用某些选项,并在使用两个不同图像启用选项时显示这些选项。当第一次单击按钮时,它将变为true,并应显示image\u true。再次单击时,应返回false并显示image\u false。
    我的第一个问题是: Button 具有闩锁操作,因此单击后返回false。有没有办法改变这种行为?
    如果没有,我可以使用不同类型的元素,比如 checkbox

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

    我知道如何按说明分配一幅图像 here ,但我真的不知道如何将它们分配到不同的州。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Mahmoud Heretani    6 年前

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

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

    之后,您需要将图像添加到项目中,并确保其构建操作(来自属性)是资源,最终结果如下: First state Second state