我有一个Button
的WPF桌面应用程序。当我在普通PC上运行并将鼠标光标移到按钮上时,它变为蓝色(默认Windows主题)。当我移出光标时,按钮再次变灰。非常正常的行为。
但是当我在Windows 8平板电脑上运行它时,会发生以下情况:我触摸Button
,它变为蓝色。然后我向上移动手指,但按钮保持蓝色。没有MouseLeave
事件。我看到蓝色按钮,直到我点击屏幕上的其他位置。
有没有解决方法如何防止这种情况?我知道我可以删除整个悬停效果,但除非有另一种方法,否则我不想这样做。
答案 0 :(得分:0)
检查关注(http://blakenui.codeplex.com/)是否有助于您解决问题
WPF: Is there a possibility to "route" ordinary mouse events to touch events in Windows 7
答案 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
的来源