gpt4 book ai didi

c# - XAML 更改 Togglebutton 内的图像源

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:00 25 4
gpt4 key购买 nike

当切换按钮“IsPressed”为真时,我正在尝试更改图像源(仅限 XAML)。但是,当我尝试通过“Image.Trigger”绑定(bind)该属性时,它不起作用。

这就是我现在所拥有的,图像显示的与我想要的完全一样。

<ToggleButton x:Name="pbStations"
Template="{StaticResource ContentOnlyTemplateToggleButton}">
<StackPanel Orientation="Horizontal">
<Image Source="/Sprites/Misc/ExpanderButtonClose.png"
Margin="2"
Stretch="Uniform"
x:Name="img">
</Image>
<TextBlock Text="STATIONS"
x:Name="tbStations"
Style="{StaticResource tbTriggerGray}" />
</StackPanel>
</ToggleButton>

这是我尝试过的方法,但不起作用:

<ToggleButton x:Name="pbStations"
Template="{StaticResource ContentOnlyTemplateToggleButton}">
<StackPanel Orientation="Horizontal">
<Image Source="/Sprites/Misc/ExpanderButtonClose.png"
Margin="2"
Stretch="Uniform"
x:Name="img">
<Image.Triggers>
<DataTrigger Binding="{Binding ElementName=pbStations,Path=IsPressed}"
Value="True">
<Setter TargetName="img"
Property="Image.Source"
Value="/Sprites/Misc/ExpanderButtonOpen.png" />
</DataTrigger>
</Image.Triggers>
</Image>
<TextBlock Text="STATIONS"
x:Name="tbStations"
Style="{StaticResource tbTriggerGray}" />
</StackPanel>
</ToggleButton>

最佳答案

尝试在该图像的样式内为该图像设置触发器。这是代码

<ToggleButton x:Name="pbStations"
Template="{StaticResource ContentOnlyTemplateToggleButton}">
<StackPanel Orientation="Horizontal">
<Image Margin="2"
Stretch="Uniform"
x:Name="img">
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<DataTrigger
Binding="{Binding ElementName=pbStations,Path=IsPressed}"
Value="True">
<Setter Property="Source"
Value="/Sprites/Misc/ExpanderButtonOpen.png" />
</DataTrigger>
<DataTrigger
Binding="{Binding ElementName=pbStations,Path=IsPressed}"
Value="False">
<Setter Property="Source"
Value="/Sprites/Misc/ExpanderButtonClose.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<TextBlock Text="STATIONS"
x:Name="tbStations"
Style="{StaticResource tbTriggerGray}" />
</StackPanel>
</ToggleButton>

我将所有图像设置逻辑移到了 2 个数据触发器中。原因是 WPF 引擎将在执行 DataTrigger 后评估图像的 Source 属性,因此 DataTrigger 的 Setter 的优先级低于手动设置图像的 Source 属性。

请注意,当您按住鼠标左键时,IsPressed 仅为 True,但当您松开鼠标左键时,IsPressed 将变为 False。 ToggleButton 类有 IsChecked 属性可以存储状态。

关于c# - XAML 更改 Togglebutton 内的图像源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871175/

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