0

テレビを制御する UWP アプリがあります。いくつかのボタン、チェックボックスなど、およびキーボード コントロール/イベントがあります。この組み合わせは問題を引き起こします。チェックボックスをオンにしてからVirtualKey.Subtractを押すと、チェックボックスがオフになり、キーボードから変更したくありません。e.Handled の使用は機能していないようです。

UWP アプリで既定のキーボード ナビゲーション動作またはキーボード フォーカスを無効にするにはどうすればよいですか?

private async void Page_Loaded(object sender, RoutedEventArgs e)
{
    Window.Current.CoreWindow.KeyDown += KeyEventHandler;
    Window.Current.CoreWindow.KeyUp += KeyEventHandlerDevNull;
}

private void KeyEventHandlerDevNull(CoreWindow sender, KeyEventArgs e)
{
    e.Handled = true;
}

private async void KeyEventHandler(CoreWindow sender, KeyEventArgs e)
{
    e.Handled = true; //gets unset in case of default

    if (MainViewModel.ControlsEnabled)
    {
        switch (e.VirtualKey)
        {
            case VirtualKey.Left:
                await ButtonPressLeft();
                break;
            case VirtualKey.Right:
                await ButtonPressRight();
                break;
            default:
                e.Handled = false;
                break;
        }
    }
}

この質問が重複している可能性がある場合は申し訳ありませんが、UWP (ユニバーサル Windows プラットフォーム) では異なると思います。

4

1 に答える 1

1

カスタムチェックボックスを実装/使用し、チェックボックスへの変更を防ぐために OnKeyDown イベントをオーバーライドする必要があります。

public sealed partial class MyCheckBox : CheckBox
{
    public MyCheckBox()
    {
        this.InitializeComponent();
    }

    protected override void OnKeyDown(KeyRoutedEventArgs e)
    {
        e.Handled = true;
        //your logic
    }
}
于 2015-12-14T15:43:34.433 に答える