2013-07-12 198 views
4

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

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

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

回答

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

你可以通过删除WPF中的默认鼠标悬停选项来实现此目的。它对我来说非常合适。

这里是我找到了answer