gpt4 book ai didi

c# - 单击 Silverlight 时更改 ToggleButton 图像

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:23 27 4
gpt4 key购买 nike

我一辈子都想不出如何在单击时更改 ToggleButton 图像。我查了无数的例子,它们都已经过时了,不再起作用了。或者如果他们这样做,我无法让他们工作。有没有人有我可以查看的最新示例或任何建议?

我先尝试在后面的代码中这样做。我发现的示例使用了 BitmapImage,但由于安全原因无法使用 BeginInit 方法,因此不再可能。

接下来,我尝试了许多样式触发器,但即使直接复制和修改它们以适应正确的参数,我也遇到了许多编译错误。所以我被卡住了。我无法弄清楚如何使用 EventTrigger 来执行此操作,也没有任何旧示例似乎有效。有人有什么想法吗?

最佳答案

为什么不是这样的:

<ToggleButton x:Name="b">
<Image Src="myImage.png" Visibility="{Binding ElementName=b,Path=IsChecked,Converter="{StaticResource BooleanToVisibilityConverter}}"/>
<Image Src="myOtherImage.png" Visibility="{Binding ElementName=b,Path=IsChecked,Converter="{StaticResource BooleanToVisibilityConverter,ConverterParameter=Invert}}"/>
</ToggleButton>

你有一个 bool 值到可见性的转换器,它可以接受一个参数来反转 bool 值。

编辑:

您需要定义一个转换器,以便它可以将 bool?IsChecked 属性转换为 Visibility 枚举。这就是所有绑定(bind)代码所做的。有一个基本实现 here当为真时将转换为 Visibility.Visible,为假时将转换为 Visibility.Collapsed。您需要为 参数 添加一个检查,以便在传递 Invert 时反转可见性(在两个图像之间切换)。

另一种方法是在样式中定义图像,并使用 CheckedUnchecked 的视觉状态来翻转图像。您可以将一种样式应用于多个按钮,但很难改变每个按钮的图像(我的解决方案就是这样做的)。

这是您设置资源的方式

XAML

<!-- Place this in your window -->
xmlns:converters="clr-namespace:NameSpace"

<!-- Place this above your root UI -->
<Window.Resources>
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Window.Resources>

然后在这里使用转换器BooleanToVisibilityConverter

关于c# - 单击 Silverlight 时更改 ToggleButton 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com