Использование стиля PointerOver для Button требует двойного нажатия на сенсорном устройстве (щелчок мышью в порядке)

Я пишу приложение для Магазина Windows, используя C#/VS2013

Когда я изменяю стиль изображения кнопки, чтобы создать эффект, когда указатель мыши находится над кнопкой, я использую следующее:

<Style x:Key="ButtonStyle" TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Image Source="/button_enabled.png" x:Name="Image" Height="50" >
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal">
                                <Storyboard Storyboard.TargetName="Image" Storyboard.TargetProperty="Source">
                                    <ObjectAnimationUsingKeyFrames>
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="/button_enabled.png"/>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="PointerOver">
                                <Storyboard Storyboard.TargetName="Image" Storyboard.TargetProperty="Source">
                                    <ObjectAnimationUsingKeyFrames>
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="/button_over.png"/>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                           <VisualState x:Name="Pressed">
                                <Storyboard Storyboard.TargetName="Image" Storyboard.TargetProperty="Source">
                                    <ObjectAnimationUsingKeyFrames>
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="/button_click.png"/>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                </Image>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Это прекрасно работает, когда я использую мышь для перемещения курсора.

Однако, когда я нажимаю кнопку на сенсорном экране (вместо того, чтобы щелкать мышью по кнопке), ВСЕГДА требуется 2 отдельных щелчка, чтобы зарегистрировать действие.

Если я удаляю раздел PointerOver, то все работает нормально (и щелчок мышью, и касание / нажатие), но при использовании мыши я теряю эффект наведения мыши.

У кого-нибудь есть идеи о том, почему это происходит? Это ошибка в атрибуте PointerOver?


Обновить Вот как создаются экземпляры кнопок:

 <Grid Grid.Column="1">
      <Button Style="{StaticResource ButtonStyle}" Tag="Style1" HorizontalAlignment="Right" Margin="10,0,10,0" Click="Btn_Click" PointerReleased="Btn_Released" IsEnabled="True"/>
 </Grid>

0 ответов

Другие вопросы по тегам