我有一个带有Button
. 当我在普通 PC 上运行它并将鼠标光标移到按钮上时,它变成蓝色(默认 Windows 主题)。当我将光标移出时,按钮再次变灰。很正常的行为。
但是当我在 Windows 8 平板电脑上运行它时,会发生以下情况:我触摸Button
,它变成蓝色。然后我向上移动手指,但按钮保持蓝色。没有MouseLeave
事件。我看到蓝色按钮,直到我单击屏幕上的其他位置。
有什么解决方法可以防止这种情况发生吗?我知道我可以消除整个悬停效果,但我不想这样做,除非有其他方法。
检查以下(http://blakenui.codeplex.com/)是否可以帮助您处理问题
您可以通过删除 WPF 中的默认鼠标悬停选项来执行此操作。它对我来说非常好。
这是我找到答案的来源
我能够通过使用以下使用视觉状态的行为来解决这个问题:
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);
}
}
}
}