私は、メッセージボックスを介してユーザーにメッセージを表示するアプリケーションを持っています。ユーザーが[OK]をクリックすると、 は、ビジュアルツリーの上のItemsControlにフォーカスを戻します。タッチ対マウス/スタイラスの動作のWPFアプリケーションの違い
私が実行している奇妙な振る舞い:あなたの指を使って、メッセージボックスが閉じられた後、いずれかのボタンを2回押す必要があります。 最初の指押しは文字通り画面のどこにでも置くことができます。それは焦点の問題のようだが、我々はすでに焦点を復元した。 マウスまたはスタイラスを使用するには、メッセージボックスを閉じた後にボタンを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;
}
}
}