Изменить фоновое изображение кнопки при нажатии с использованием VisualStateManager - PullRequest
4 голосов
/ 17 января 2011

У меня есть эта кнопка:

<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>

Как изменить фон на /Images/prev-selected.png, когда пользователь нажал кнопку?Это даст ему обратную связь, так как это приложение WP7

, что у меня есть (не работает):

<vsm:VisualState x:Name="Pressed">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames BeginTime="00:00:00"  Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="Background">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <ImageBrush ImageSource="/Images/prev-selected.png" Stretch="Fill"/>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </vsm:VisualState>

Ответы [ 3 ]

5 голосов
/ 17 января 2011

Насколько я знаю, вы не можете изменить значение свойства Source для элемента Image с помощью VisualStateManager.Однако вы можете просто добавить два элемента Image в 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>
4 голосов
/ 17 января 2011

См. Сообщение Питера Торра о " Почему я не могу изменить фон моей кнопки при событии Click? " для примера и объяснения, как это сделать.

3 голосов
/ 11 декабря 2012

Чтобы добавить больше информации к ответу Дерека, вы должны посмотреть на ответ Гамбита здесь для полного XAML, который работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...