WPF 应用程序的触摸行为差异与 mouse/stylus
WPF application difference in behavior for touch versus mouse/stylus
我有一个通过消息框向用户显示消息的应用程序。用户点击确定后,
将焦点恢复到可视化树上方的 ItemsControl。
我 运行 遇到的奇怪行为:在消息框关闭后,您必须用手指在任何按钮上按两次。
第一个手指按下实际上可以在屏幕上的任何位置。这似乎是一个焦点问题,但我们已经恢复了焦点。
使用鼠标或手写笔只需单击 1 次按钮即可在消息框关闭后工作。
有没有人运行遇到过这样的问题?我对 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;
}
}
}
原来焦点是一条红鲱鱼。没有用于 TouchDown 的事件处理程序,尽管有用于 StylusUp 和 Click 的处理程序。至于为什么会导致第一个手指按下没有注册,我不知道。据我了解,Touch 事件应该被提升为 Click 事件,所以它应该工作正常。
我有一个通过消息框向用户显示消息的应用程序。用户点击确定后, 将焦点恢复到可视化树上方的 ItemsControl。
我 运行 遇到的奇怪行为:在消息框关闭后,您必须用手指在任何按钮上按两次。 第一个手指按下实际上可以在屏幕上的任何位置。这似乎是一个焦点问题,但我们已经恢复了焦点。 使用鼠标或手写笔只需单击 1 次按钮即可在消息框关闭后工作。
有没有人运行遇到过这样的问题?我对 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;
}
}
}
原来焦点是一条红鲱鱼。没有用于 TouchDown 的事件处理程序,尽管有用于 StylusUp 和 Click 的处理程序。至于为什么会导致第一个手指按下没有注册,我不知道。据我了解,Touch 事件应该被提升为 Click 事件,所以它应该工作正常。