hij*_*ack 1 c# wpf xaml visual-studio-2010
当Togglebutton"IsPressed"为真时,我正在尝试更改图像源(仅限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>
Run Code Online (Sandbox Code Playgroud)
这是我试过的不起作用:
<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>
Run Code Online (Sandbox Code Playgroud)
尝试在该Image的样式中设置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>
Run Code Online (Sandbox Code Playgroud)
我将所有图像设置逻辑移到了2个数据触发器中.原因是WPF引擎将在执行DataTrigger后评估您的Image的Source属性,因此DataTrigger的Setter将具有比手动设置图像的Source属性更低的优先级.
请注意,当您按住鼠标左键时,IsPressed仅为True,但是当您释放时,IsPressed将变为False.ToggleButton类有可以存储状态的IsChecked属性.