我有一个应用程序通过消息框向用户显示消息。用户点击好后,就可以了 将焦点恢复到可视树中的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;
}
}
}
答案 0 :(得分:0)
原来,焦点是红鲱鱼。 TouchDown没有事件处理程序,即使有StylusUp和Click的处理程序。至于为什么导致第一次手指按下没有注册,我不知道。从我读到的内容来看,Touch事件应该被提升为Click事件,所以它应该运行良好。