似乎 webview 控件在根页面上正常工作,但在多个导航场景中难以保持焦点。这是我用来解决问题的解决方法。
首先,我创建了一个新类作为导航参数传递。
class DetailPayload
{
public Frame DetailFrame { get; set; }
public string Title { get; set; } // may not be important to your software
}
当我导航到有问题的 web 视图的页面并传递一个 DetailPayload 对象时,我创建了一个新的根框架。
DetailPayload dpl = new DetailPayload();
dpl.DetailFrame = this.Frame;
dpl.Title = itemTitle;
Frame rootFrame = new Frame();
rootFrame.Navigate(typeof(DetailPage), dpl);
Window.Current.Content = rootFrame;
Window.Current.Activate();
我将旧框架存储在要导航到的页面中的“Frame backFrame”中。
DetailPayload dpl = (DetailPayload)navigationParameter;
this.backFrame = dpl.Frame;
我更改后退按钮控件以触发不同的事件并删除禁用它的部分(如果它是根框架)。
<Button x:Name="backButton" Style="{StaticResource BackButtonStyle}" Click="backButton_Click"/>
然后我在 backButton_Click 函数中调用它返回上一页。
Window.Current.Content = this.backFrame;
Window.Current.Activate();
似乎我必须为每个带有 webview 的页面执行此操作,因为它不是实际控件,因此缺少 .Focus() 方法。