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

Posted

技术标签:

【中文标题】按钮悬停效果和触摸 (WPF)【英文标题】:Button hover effect and touch (WPF) 【发布时间】:2013-07-11 05:10:26 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

检查是否关注 (http://blakenui.codeplex.com/) 将帮助您处理问题

WPF: Is there a possibility to "route" ordinary mouse events to touch events in Windows 7

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

您可以通过删除 WPF 中的默认鼠标悬停选项来做到这一点。它对我来说非常好。

这是我找到answer的来源

【讨论】:

以上是关于按钮悬停效果和触摸 (WPF)的主要内容,如果未能解决你的问题,请参考以下文章

如何防止触摸设备上按钮的粘滞悬停效果

触摸按钮命令执行问题 | WPF |虚拟机 |视窗 10

wpf按钮背景悬停颜色

WPF Material Design 凸起的按钮悬停状态

如何在 WPF 中删除鼠标悬停时的按钮发光

触摸屏设备上的 CSS 悬停不会被忽略