gpt4 book ai didi

wpf - 响应WPF中的 "Back"和 "Forward"按钮

转载 作者:行者123 更新时间:2023-12-02 04:03:40 25 4
gpt4 key购买 nike

我计划向我的 WPF 应用程序添加对许多键盘上的“后退”和“前进”按钮的支持,但我正在努力让它们正常工作。

我尝试过使用标准 KeyBinding 到 BrowserBack 和 BrowserForward,但没有任何乐趣。我使用 ESC 键测试了代码,以确保它正常工作,并且该键没有问题。

下一步我处理了 KeyUp 事件,但发送的 key 是“System”,这是无用的,如果我使用 KeyInterop.VirtualKeyFromKey 我只会返回 0。

我开始认为 PInvoke/捕获真实的窗口消息将是唯一的选择,但如果有人有任何好主意,我宁愿避免这种情况?

哦,按键本身肯定可以工作,而且我的键盘已插入;-)

更新:他们建议使用 SystemKey 让我能够使用它:

new KeyBinding(TestCommand, new KeyGesture(Key.Left, ModifierKeys.Alt));

这似乎适用于键盘按钮,但不适用于相应的触摸“轻弹”(模拟下一个和后一个)。这些轻击在浏览器中运行良好,但根据我的 KeyUp 事件,它们发送的只是“LeftAlt”,没有其他内容!

** 再次更新 **:Rich 的评论让我想到了这一点:

this.CommandBindings.Add(new CommandBinding(NavigationCommands.BrowseBack, BrowseBack_Executed));
this.CommandBindings.Add(new CommandBinding(NavigationCommands.BrowseForward, BrowseForward_Executed));

这似乎很有效……也可以轻弹!

最佳答案

您引用的按钮在 WPF 中作为 MediaCommands、NavigationCommands、ApplicationCommands、EditingCommands 或 ComponentCommands 进行处理 - 您需要为要拦截的每个按钮添加 CommandBinding,例如:-

<Window.CommandBindings>
<CommandBinding Command="MediaCommands.PreviousTrack"
Executed="PreviousTrackCommandBinding_Executed"/>
<CommandBinding Command="MediaCommands.NextTrack"
Executed="NextTrackCommandBinding_Executed"/>

并在后面的代码中添加相关事件:-

private void PreviousTrackCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Previous track");
}
private void NextTrackCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Next track");
}

我想说在你的情况下它可能是NavigationCommands.BrowseForward和NavigationCommands.BrowseBack。看看... http://msdn.microsoft.com/en-us/library/system.windows.input.navigationcommands.aspxhttp://msdn.microsoft.com/en-us/library/system.windows.input.navigationcommands_members.aspx

查看我的博客文章以获取更多信息和更多代码示例。

http://richardhopton.blogspot.com/2009/08/responding-to-mediapresentation-buttons.html

关于wpf - 响应WPF中的 "Back"和 "Forward"按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2205972/

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