Silverlight 使用VisualStateManager更改按下按钮时的背景图像
我有这个按钮:Silverlight 使用VisualStateManager更改按下按钮时的背景图像,silverlight,xaml,windows-phone-7,Silverlight,Xaml,Windows Phone 7,我有这个按钮: <Button x:Name="PrevAdIcon" Tag="-1" Visibility="Collapsed" Width="80" Height="80" Click="PrevAd"> <Button.Background> <ImageBrush AlignmentY="Top" Stretch="None" ImageSource="/Images/prev.png"></ImageBrush>
<Button x:Name="PrevAdIcon" Tag="-1" Visibility="Collapsed" Width="80" Height="80" Click="PrevAd">
<Button.Background>
<ImageBrush AlignmentY="Top" Stretch="None" ImageSource="/Images/prev.png"></ImageBrush>
</Button.Background>
</Button>
据我所知,您不能使用VisualStateManager更改Image元素上Source属性的值。但是,您可以只向ControlTemplate添加两个图像元素:一个用于正常状态,另一个用于按下状态,并在按下状态下切换可见性
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Img">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="PressedImg">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
请参阅Peter Torr在“”上的帖子,以获取有关如何执行此操作的示例和解释。若要为Derek的答案添加更多信息,请查看Gambit的答案,以获得有效的完整XAML我在代码中没有看到任何您希望切换到的背景(/Images/prev selected.png)。@Falanwe我编辑过。ImageBrush图像源为Images/prev-selected.png
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Img">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="PressedImg">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>