如何在 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;
}
}
}
}
您可以使用加速密钥来处理此问题。如果您希望窃取某些代码,则可以利用模板 10 中的 KeyHelper。
https://github.com/Windows-XAML/Template10/blob/master/Template10%20(Library)/Services/KeyboardService/KeyboardHelper.cs
再说一次,你可以只使用模板10;在Visual Studio中,转到扩展管理器并搜索"模板10"或通过Nuget添加模板10库。
祝你好运!