c# - 如何在 C# 中处理 UWP KeyDown 与 Canvas 的交互

标签 c# canvas winrt-xaml uwp

我一直在尝试将此工作作为游戏的一部分,以在使用 Canvas 时学习 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;
            }
        }
    }
}

最佳答案

您可以使用加速键来处理这个问题。如果您想要窃取某些代码,可以利用模板 10 中的 KeyHelper。

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

然后,您可以只使用模板 10;在 Visual Studio 中转到扩展管理器并搜索“模板 10”或通过 Nuget 添加模板 10 库。

祝你好运!

关于c# - 如何在 C# 中处理 UWP KeyDown 与 Canvas 的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35161219/

相关文章:

c# - 这是什么代码 : Func < T, string > 我不明白

c# - 更新 Azure 服务总线队列上已有的代理消息

javascript - 绘制 3 行 html5(通过 deviceorientation 的 alpha、beta、gamma)

c# - WinRT 如何保存 ContactPicker IRandomAccessStreamWithContentType 的图像

windows-8 - 在 Windows 8 中禁用或阻止页面的纵向模式

xaml - Windows 8 XAML 按钮隐藏 onHover,我们该如何解决?

c# - 要反序列化的对象具有 C# 关键字

c# - 使用 EPPlus,我正在尝试将 gridview 导出到 Excel 工作表

使用多个路径和绘制对象时,Android Canvas 会被清理

javascript - 如何通过 websockets 高效处理大量 HTML5 canvas 像素数据