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

时间:2016-02-02 18:31:22

标签: 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;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

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

  

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

然后,你可以使用模板10;在Visual Studio中转到Extension Manager并搜索&#34;模板10&#34;或通过Nuget添加Template 10库。

祝你好运!