按钮悬停效果和触摸(WPF)

时间:2013-07-12 15:36:28

标签: wpf button windows-8 hover touch

我有一个Button的WPF桌面应用程序。当我在普通PC上运行并将鼠标光标移到按钮上时,它变为蓝色(默认Windows主题)。当我移出光标时,按钮再次变灰。非常正常的行为。

但是当我在Windows 8平板电脑上运行它时,会发生以下情况:我触摸Button,它变为蓝色。然后我向上移动手指,但按钮保持蓝色。没有MouseLeave事件。我看到蓝色按钮,直到我点击屏幕上的其他位置。

有没有解决方法如何防止这种情况?我知道我可以删除整个悬停效果,但除非有另一种方法,否则我不想这样做。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我能够通过使用以下使用视觉状态的行为来解决这个问题:

public class TouchDeviceMouseOverUIElementFixBehavior : Behavior<UIElement>
{
    protected override void OnAttached()
    {
        AssociatedObject.StylusUp += AssociatedObject_StylusUp;
    }

    protected override void OnDetaching()
    {
        AssociatedObject.StylusUp -= AssociatedObject_StylusUp;
    }

    private void AssociatedObject_StylusUp(object sender, StylusEventArgs e)
    {
        var control = sender as FrameworkElement;
        if (control != null)
        {
            if (!VisualStateManager.GoToElementState(control, "Normal", true))
            {
                VisualStateManager.GoToState(control, "Normal", true);
            }
        }
    }
}

答案 2 :(得分:0)

您可以通过删除WPF中的默认鼠标悬停选项来执行此操作。它对我来说非常好。

以下是我找到answer

的来源