用于按钮的VSM CommonStates在触摸和鼠标方面的工作方式不同

时间:2014-04-03 08:36:53

标签: wpf xaml touch visualstatemanager

我有一个非常简单的Button可视状态管理器,可以动画边框的颜色,并将按钮的图像内容缩放到Pressed状态。使用鼠标按下时可以正常工作,但是当使用触摸屏时,只有在手指弄脏按钮后才能达到按下状态(按钮面部会发生一些拖动)。

我查看了Button的所有CommonStates,但没有Touched状态。我忽略了什么?

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="CommonStates">
        <VisualStateGroup.Transitions>
            <VisualTransition GeneratedDuration="0:0:0.05" />
            <VisualTransition GeneratedDuration="0:0:0.1" To="Pressed" />
        </VisualStateGroup.Transitions>
        <VisualState x:Name="Normal" />
        <VisualState x:Name="Pressed">
            <Storyboard>
                <ColorAnimation Storyboard.TargetName="ButtonBorder" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="#A9CC3D"/>
                <DoubleAnimation Storyboard.TargetName="GrayBorder" Storyboard.TargetProperty="(Border.Background).(ImageBrush.RelativeTransform).(ScaleTransform.ScaleX)" To="1.1"/>
                <DoubleAnimation Storyboard.TargetName="GrayBorder" Storyboard.TargetProperty="(Border.Background).(ImageBrush.RelativeTransform).(ScaleTransform.ScaleY)" To="1.1"/>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

奇怪的是,在我们使用ControlTemplate.Triggers进行工作之前。

1 个答案:

答案 0 :(得分:0)

问题是默认情况下Windows地图触摸按住右键单击。检查以下Stackoverflow讨论如何在控件/窗口级别禁用此行为。

Disable a right click (press and hold) in WPF application.