7

我有一个带有Button. 当我在普通 PC 上运行它并将鼠标光标移到按钮上时,它变成蓝色(默认 Windows 主题)。当我将光标移出时,按钮再次变灰。很正常的行为。

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

有什么解决方法可以防止这种情况发生吗?我知道我可以消除整个悬停效果,但我不想这样做,除非有其他方法。

4

3 回答 3

0

检查以下(http://blakenui.codeplex.com/)是否可以帮助您处理问题

WPF:是否有可能将普通鼠标事件“路由”到 Windows 7 中的触摸事件

于 2013-07-12T18:37:01.670 回答
0

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

这是我找到答案的来源

于 2016-01-22T05:51:38.977 回答
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);
            }
        }
    }
}
于 2015-09-03T12:10:26.407 回答