当Togglebutton“IsPressed”为true时,我正在尝试更改图像源(仅限XAML)。但当我试图通过''Image.Trigger'绑定该属性时,它无法正常工作。
这就是我现在所拥有的,图像显示的完全像我想要的那样。
<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>
答案 0 :(得分:5)
尝试在该图像的样式中设置Image的触发器。这是代码
<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后评估您的Image的Source属性,因此DataTrigger的Setter将具有比手动设置图像的Source属性更低的优先级。
请注意,当您按住鼠标左键时,IsPressed仅为True,但是当您释放时IsPressed将变为False。 ToggleButton类有IsChecked属性,可以存储状态。
答案 1 :(得分:0)