可以在框架中的webview上返回导航吗?

时间:2017-02-07 17:24:16

标签: webview uwp windows-10 frame

在我的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;
        }
    }

1 个答案:

答案 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

中加载的上一页

祝你好运。