0

我有一个控制我的电视的 UWP 应用程序。我有一些按钮、复选框等和键盘控件/事件。这种组合会导致问题。选中复选框时,然后按VirtualKey.stract未选中复选框,我不希望通过键盘进行任何更改。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 回答