在我的Windows 10 UWP应用程序中,我使用MainPage作为导航汉堡包菜单。所有其他页面都加载到名为MyFrame的MainPage上的Frame中。使用以下代码,此框架内的后退导航功能完美:
private void MainPage_BackRequested(object sender, BackRequestedEventArgs e)
{
if (MyFrame.CanGoBack)
{
MyFrame.GoBack();
e.Handled = true;
}
}
然而,其中一个页面包含WebView。加载此页面时,我希望webview而不是框架执行GoBack事件。
以某种方式可以从MainPage访问WebView的CanGoBack属性吗?
编辑:也许像这样的作品?
private void MainPage_BackRequested(object sender, BackRequestedEventArgs e)
{
if (MyFrame.Content == typeof(Web))
{
get state of the Webview "SearchURI" here and handle the GoBack event
}
else if (MyFrame.CanGoBack)
{
MyFrame.GoBack();
e.Handled = true;
}
}
答案 0 :(得分:0)
WebView
已有CanGoBack
属性和GoBack
方法供您使用。使用这些方法,您可以使用BackButton
并控制您的backkeyprocess。
以下是我的表现方式。
在Web.xaml.cs
声明公共变量
public WebView myWebView { get; private set; }
并在您的页面构造函数中,为此变量指定实际的WebView
引用。
public Web()
{
this.InitializeComponent();
myWebView = this.webView;
}
现在在你MainPage.xaml.cs
,你用来导航的按钮,订阅BackRequested
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
现在您的OnnackRequested
会显示如下内容。
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
if (MyFrame.Content.GetType() == typeof(Web))
{
Web web = MyFrame.Content as Web;
if (web.myWebView.CanGoBack)
{
web.myWebView.GoBack();
}
else
{
if (MyFrame.CanGoBack)
{
e.Handled = true;
MyFrame.GoBack();
}
}
}
}
除非webview导航回您的初始页面,否则您将无法返回MyFrame
祝你好运。