4

簡単な解決策があるかもしれませんが、問題に直面していますが、それを見つけることができませんでした。

そのボタンの xaml で IsDefault="true" を設定することにより、1 つのボタン (送信など) に対して「Enter」キーを押すことを有効にするいくつかのボタンを含むページ (mainPage など) があり、正常に機能しました。

メインページの他のボタンをクリックすると、「はい」と「いいえ」の 2 つのボタンを含むポップアップが開きます。Enter キーを押しても、「はい」の IsDefault="true" プロパティを設定しても機能しません。(情報については、送信ボタンでも機能しませんが、それも問題ではなく、それに対する解決策もあると思います)

ポップアップのボタンでこの機能を有効にするにはどうすればよいですか?

(詳細については、ボタンとテキストボックスを含むポップアップを作成するボタンがあります。その場合、ポップアップ内のボタンに IsEnable="true" を設定すると、ボタンの仕事が行われますが、テキストボックスをクリックした場合のみ.この動作を観察した後、テキスト ボックスにフォーカスを設定しようとしたので、役立つかもしれませんが、テキスト ボックスにフォーカスを設定するとうまくいきません。 " )

4

1 に答える 1

2

キーPopupに応答できるように、最初にフォーカスを設定する必要がありますEnter

WPF には、キーボードと論理の 2 種類のフォーカスがあります。複数のオブジェクトが異なるフォーカス スコープにある場合は、Logical フォーカスを持つことができます (たとえば、1 つの要素を Window にフォーカスし、別の要素を Popup にフォーカスすることができます) が、キーボード フォーカスを持つことができるオブジェクトは 1 つだけです。

ポップアップにフォーカスを設定するには、通常Loaded、ポップアップが表示されて読み込まれるたびに実行されるイベントを使用します。

MyTextBox.Focus();         // Set Logical Focus
Keyboard.Focus(MyTextBox); // Set Keyboard Focus

編集

Loadedイベントの直後にアプリケーション内の他の何かがフォーカスを盗んでいる場合は、 を使用しDispatcherて、後でDispatcherPriorityなどの Focus コードを実行できます。Input

Dispatcher.BeginInvoke(DispatcherPriority.Input,
    new Action(delegate() { 
        MyTextBox.Focus();         // Set Logical Focus
        Keyboard.Focus(MyTextBox); // Set Keyboard Focus
     }));
于 2013-01-16T13:58:19.653 に答える