2

ユーザーが入力を開始するたびに、フォーカスが単一のテキスト ボックスにジャンプすることが理にかなっているメトロ アプリを作成しています。しかし、他のユーザー コントロールを変更してキーダウンを検出し、フォーカスをテキスト ボックスに移動しない限り、この機能をローカルに実装する方法がわかりません。

WinForms では、フォームの「KeyPreview」プロパティを使用していました。これにより、フォームのコントロール内でキーを押すと、フォームの KeyDown/KeyPress/KeyUp イベントが発生しました。メトロで同等のものを見つけることができません。

テキストボックスが離れるたびにフォーカスを強制する単純な解決策を試しましたが、明らかな問題があります(たとえば、ボタンをクリックして押したままにすると、強調表示されたままではなくちらつきます)。

キーボードの入力が特定のテキスト ボックスに確実に移動するようにするにはどうすればよいですか?

4

3 に答える 3

2

イベントは、すべてのコントロールがネストされているルート要素である現在のコア ウィンドウに配置する必要があります。

Windows.UI.Xaml.Window.Current.CoreWindow.KeyDown += (sender, arg) => {
    // invoked anytime a key is pressed down, independent of focus
}
于 2012-10-20T14:00:06.473 に答える
1

xamlコードで、これらをイベントのページにバインドします。

    Loaded="pageRoot_Loaded_1"
    Unloaded="pageRoot_Unloaded_1"

これらのメソッド内では、キーダウンまたはキー押下のためにイベントをバインドおよびバインド解除する必要があります

    private void pageRoot_Loaded_1(object sender, RoutedEventArgs e)
    {
    Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
    }

    private void pageRoot_Unloaded_1(object sender, RoutedEventArgs e)
    {
        Window.Current.CoreWindow.KeyDown -= CoreWindow_KeyDown;
    }
于 2012-12-13T06:39:42.213 に答える
1

どうぞ ...

キーボード入力への応答 (C#/VB/C++ および XAML を使用した Metro スタイル アプリ)

&&

キーボード アクセシビリティの実装 (C#/VB/C++ および XAML を使用した Metro スタイル アプリ)

ルーティング イベントには特に注意してください。そこにも例があります。

お役に立てれば。

于 2012-07-19T00:36:12.243 に答える