c# - 指示状态的 WPF 自定义按钮
问题描述
我想创建一个启用某些选项的按钮,并在使用两个不同图像启用选项时显示。当按钮第一次被点击时,它变为 true 并且应该显示 image_true。当它再次被点击时,它应该回到 false 并显示 image_false。
我的第一个问题是:Button
有闩锁动作,所以它被点击后又回到假。有没有办法改变这种行为?
如果不是,我可能只使用不同类型的元素,例如checkbox
.
在这两种情况下:如何为两种状态分配不同的图像?
我知道如何按照此处的说明分配一张图像,但我真的不知道如何从那里继续将它们分配给不同的状态。
解决方案
您可以通过使用包含 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>
推荐阅读
- java - 我为特定索引(Java)的链接列表中的节点编写了一个删除方法,但它对列表没有任何更改?
- numpy - Pyspark - 尝试迭代 numpy 数组时出错
- sas - 在SAS中将数字转换为日期格式
- visual-studio - 如何让 Visual Studio 将应用程序发布到由证书公用名而不是指纹保护的 Service Fabric 群集?
- c# - 如果属性是通用类,则获取属性类型
- ios - ios导航栏大标题问题
- python - Python post请求返回500
- python - 将多个镶木地板文件加载到数据框中进行分析
- pointers - seekbar 在运行时更改指针位置
- django - Jenkins JUnit 插件给出错误“错误:未找到测试报告文件。配置错误?”