WPF应用程序在触摸与鼠标/手写笔的行为上的差异

时间:2016-05-04 22:47:08

标签: wpf c#-4.0 data-binding focus wpf-controls

我有一个应用程序通过消息框向用户显示消息。用户点击好后,就可以了 将焦点恢复到可视树中的ItemsControl。

我遇到的奇怪行为:使用手指,您必须在消息框关闭后按任意按钮两次。 第一次手指按压可以在屏幕上的任何位置。这似乎是一个焦点问题,但我们已经恢复了焦点。 在消息框关闭后,只需单击一下按钮即可使用鼠标或手写笔。

有没有人遇到这样的问题?我对WPF没有多少经验。

这是显示的消息框以及之后如何设置焦点。它将进入第一个if语句。

// Save the element with focus.
UIElement uiElement = Keyboard.FocusedElement as UIElement;

// show message box
using (new DisposableCursor(Cursors.Arrow))
{
    result = window.Show(type, title, message, buttons);
}

// Check if element still has focus after displaying the message box.
if (uiElement != null && uiElement != Keyboard.FocusedElement) 
{
    // Go up the visual tree to try to set the focus to a parent element.
    for (int i = 0; i < 100; i++)
    {
        uiElement = VisualTreeHelper.GetParent(uiElement) as UIElement;

        if (uiElement == null)
        {
            break;
        }

        if (uiElement.Focus())
        {
            break;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

原来,焦点是红鲱鱼。 TouchDown没有事件处理程序,即使有StylusUp和Click的处理程序。至于为什么导致第一次手指按下没有注册,我不知道。从我读到的内容来看,Touch事件应该被提升为Click事件,所以它应该运行良好。