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

7
我有一个WPF桌面应用程序,包含一个Button按钮。在普通PC上运行并使用鼠标悬浮在按钮上时,它会变成蓝色(默认的Windows主题),当鼠标移开后按钮又会变回灰色。这是很正常的行为。
但当我在Windows 8平板电脑上运行该应用程序时,发生了以下情况:我触摸Button按钮,它会变成蓝色。然后我抬起手指,但按钮仍保持蓝色状态。没有MouseLeave事件。直到我在屏幕上其他地方单击才能取消蓝色按钮状态。
是否有任何方法可以解决这个问题?我知道我可以完全删除悬停效果,但除非有其他方法,否则我不想这样做。
3个回答


0
你可以通过移除WPF中的默认鼠标悬停选项来实现这一点。对我来说,它完美地解决了问题。
这是我找到的来源answer

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);
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接