如何在 c# 中处理 UWP KeyDown 与画布的交互

本文关键字:交互 KeyDown UWP 处理 | 更新日期: 2023-09-27 18:33:05

我一直在尝试将其作为游戏的一部分,以便在使用画布时学习UWP环境。我已经读了很多关于让KeyDown工作的主题,我迷路了。

不用说我希望,但它们似乎都不起作用,没有一个会导致调用事件处理程序。

任何帮助将不胜感激。

我的 XAML

    <Grid Background="Black">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto" />
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Canvas Name="paintCanvas" Background="Black" 
                Grid.Column="1" HorizontalAlignment="Stretch" MaxWidth="642" MaxHeight="422"/>
    </Grid>

我的简化代码隐藏:

namespace Game
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            paintCanvas.KeyDown += new KeyEventHandler(OnKeyDownHandler);
        }

        private void OnKeyDownHandler(object sender, KeyRoutedEventArgs e)
        {
            switch (e.Key)
            {
                case VirtualKey.Down:
                    // do something
                    break;
                case VirtualKey.Up:
                    // do something
                    break;
                case VirtualKey.Left:
                    // do something
                    break;
                case VirtualKey.Right:
                    // do something
                    break;
            }
        }
    }
}

如何在 c# 中处理 UWP KeyDown 与画布的交互

您可以使用加速密钥来处理此问题。如果您希望窃取某些代码,则可以利用模板 10 中的 KeyHelper。

https://github.com/Windows-XAML/Template10/blob/master/Template10%20(Library)/Services/KeyboardService/KeyboardHelper.cs

再说一次,你可以只使用模板10;在Visual Studio中,转到扩展管理器并搜索"模板10"或通过Nuget添加模板10库。

祝你好运!