c# – WPF和触摸焦点问题

前端之家收集整理的这篇文章主要介绍了c# – WPF和触摸焦点问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个在 Windows 8.1平板电脑上运行的WPF .NET 4.6应用程序,在过去几天中,我一直在努力使我的应用程序触摸友好,使其按预期工作.我的主要问题是关注焦点,这些影响我的应用程序中的几个控件.例如:

>文本框:有时需要双重或三重触摸才能获得输入焦点,他们确实进入鼠标超过状态,但插入符号不在那里;
> ComboBoxes:需要几个触摸才能打开它,一旦触摸了一个项目,为了选择它,组合保持打开,突出显示新选择的项目;

>按钮:需要几次点击才能运行连接的命令,并保持鼠标悬停状态;
>键盘支持

搜索解决方案时,我尝试了几种方法,每种解决方案都有自己的缺点:

>删除整个应用程序的平板电脑支持(taken from here).这个解决了上面提到的大部分焦点问题,但是滚动(并且我猜想我还没有发现的一些其他Tablet相关功能)不可用.
>需要时显式激活键盘(Example here).焦点问题仍然存在,滚动按预期工作
>我也试图删除所有的样式,并测试了来自不同制造商的2种不同的平板电脑上的一切,但没有成功

最近Microsoft announced“触摸更好”但是我找不到任何关于最佳方法来处理这个问题的官方文档.

关于如何使我的应用程序更好地使用触摸的任何建议将是一个很大的帮助.

解决方法

我能够通过使用以下行为来删除鼠标悬停状态:
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,true);
            }
        }
    }
}

猜你在找的C#相关文章