2016-05-04 6 views
1

私は、メッセージボックスを介してユーザーにメッセージを表示するアプリケーションを持っています。ユーザーが[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; 
     } 
    } 
} 

答えて

0

フォーカスが赤いニシンだったことが分かります。 StylusUpとClickのハンドラがあったとしても、TouchDownのイベントハンドラはありませんでした。なぜそれが最初の指押しが登録されなかったのか分かりません。私が読んだことから、TouchイベントはClickイベントに昇格されるべきで、うまくいったはずです。

関連する問題