我想要的是,每当用户点击快捷按钮时,我的webview(在我的应用内)都应导航到网页,例如 - CTRL + H ,同时聚焦在webview上。
这是我到目前为止编写的代码 -
for webview(XAML) -
用于密钥(.cs) -
这不起作用,请建议任何更正。
修改 - 根据Mark W的建议,我将我的c#代码更改为 -
private static bool IsCtrlKeyPressed()
{
var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
}
private void taga_keyUp(object sender, KeyRoutedEventArgs e)
{
if (IsCtrlKeyPressed())
{
switch (e.Key)
{
case VirtualKey.H: taga.Navigate(new Uri("http://www.bing.com")); break;
}
}
}
这也不起作用。
答案 0 :(得分:0)
您可以根据文档使用GetKeyPressed方法来检测修饰键。
https://docs.microsoft.com/en-us/windows/uwp/design/input/keyboard-events
摘录:
private static bool IsCtrlKeyPressed()
{
var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
}
答案 1 :(得分:0)
根据WebView
课程的评论:
如事件表中所示,WebView不支持从UIElement继承的大多数用户输入事件,例如KeyDown,KeyUp和PointerPressed。
因此KeyUp
可能不适用于WebView
。常见的解决方法是将InvokeScriptAsync
与JavaScript eval函数一起使用以使用HTML事件处理程序,并使用HTML事件处理程序中的window.external.notify
来使用WebView.ScriptNotify
通知应用程序。对于您的方案,您可以考虑使用CoreWindow
来监听KeyUp
事件,而不是作为解决方法。例如:
public MainPage()
{
this.InitializeComponent();
Window.Current.CoreWindow.KeyUp += CoreWindow_KeyUp;
}
private void CoreWindow_KeyUp(CoreWindow sender, KeyEventArgs args)
{
if (IsCtrlKeyPressed())
{
switch (args.VirtualKey)
{
case VirtualKey.H: taga.Navigate(new Uri("http://www.bing.com")); break;
}
}
}
private static bool IsCtrlKeyPressed()
{
var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
}