gpt4 book ai didi

winrt-xaml - 如何覆盖或操作 KeyDown : Space or Enter for ListView in UWP?

转载 作者:行者123 更新时间:2023-12-04 01:52:45 24 4
gpt4 key购买 nike

我附上了 KeyDown事件到 ListView在我的 Win 10 UWP 应用中。我要制作VirtualKey.Enter具有特殊效果,但该事件不会为此特定键触发。 Space、Arrow up 或 down 也不行。我猜这是因为 ListView 已经为这些键定义了特殊行为。

不过,我想覆盖其中一些键,或者至少触发其他操作。即使使用修饰符(例如 Shift+ArrowDown)将事件附加到那些键上也不起作用,因为事件仍未触发。

I read对于 WPF,有一个 PreviewKeyDown -可以附加到的事件。不过,我找不到 UWP 的那个事件。还有其他选择吗?

最佳答案

斯蒂芬妮的回答很好,适用于一般情况。但是,正如 Nilzor 所观察到的,它在 ListView 的 Enter 键的情况下不起作用。出于某种原因,如果按下 Enter,ListView 会处理 KeyDown 事件。

正如问题所问,在处理 ListView 时处理关键事件的更好方法是这样。

 private void ListView_Loaded(object sender, RoutedEventArgs e)
{
(sender as ListView).AddHandler(UIElement.KeyDownEvent, new KeyEventHandler(ListView_KeyDown), true);
}

private void ListView_KeyDown(object sender, KeyRoutedEventArgs args)
{
if (args.Key == Windows.System.VirtualKey.Enter)
{

}
}

注意 AddHandler 函数中的最后一个参数。这指定我们是否要处理已由可视化树中的前一个元素处理的事件。
当然不要忘记在适当的时候取消订阅事件

关于winrt-xaml - 如何覆盖或操作 KeyDown : Space or Enter for ListView in UWP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com