是否可以在框架中的webview上进行反向导航?

是否可以在框架中的webview上进行反向导航?,webview,uwp,windows-10,frame,Webview,Uwp,Windows 10,Frame,在我的Windows10UWP应用程序中,我使用主页浏览汉堡包菜单。所有其他页面都加载到主页上名为MyFrame的框架中。使用以下代码,此框架内的后向导航可以完美工作: private void主页\u BackRequested(对象发送方,BackRequestedEventArgs e) { if(MyFrame.CanGoBack) { MyFrame.GoBack(); e、 已处理=正确; } } 但是,其中一个页面包含Web视图。加载此页面时,我希望webview而不是框架执行G

在我的Windows10UWP应用程序中,我使用主页浏览汉堡包菜单。所有其他页面都加载到主页上名为MyFrame的框架中。使用以下代码,此框架内的后向导航可以完美工作:

private void主页\u BackRequested(对象发送方,BackRequestedEventArgs e)
{
if(MyFrame.CanGoBack)
{
MyFrame.GoBack();
e、 已处理=正确;
}
}
但是,其中一个页面包含Web视图。加载此页面时,我希望webview而不是框架执行GoBack事件

是否有可能从主页访问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;
        }
    }

WebView
已经有了
CanGoBack
属性和
GoBack
方法供您使用。使用这些方法,您可以使用
BackButton
并控制backkeyprocess

下面是我将如何做到这一点

Web.xaml.cs
中声明一个公共变量

public-WebView-myWebView{get;private-set;}
在页面构造函数中,将实际的
WebView
引用分配给该变量

publicweb()
{
this.InitializeComponent();
myWebView=this.webView;
}
现在,在您的
MainPage.xaml.cs
中,您可以使用该按钮导航、订阅
backrequest

SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility=AppViewBackButtonVisibility.Visible;
SystemNavigationManager.GetForCurrentView().BackRequested+=OnBackRequested;
现在您的
OnnackRequested
将显示如下内容

private void onbackrequest(对象发送方,BackRequestedEventArgs e)
{
if(MyFrame.Content.GetType()==typeof(Web))
{
Web=MyFrame.Content作为Web;
if(web.myWebView.CanGoBack)
{
web.myWebView.GoBack();
}
其他的
{
if(MyFrame.CanGoBack)
{
e、 已处理=正确;
MyFrame.GoBack();
}
}
}
}
除非webview导航回初始页面,否则您将无法返回到加载到
MyFrame


祝你好运。

这是可能的。back pressed事件是应用程序范围的,因此这可能取决于您订阅它的方式。您能否详细说明订阅此事件的方式和地点?通常,您必须在back事件中识别您已打开WebView,您可以通过标记或其他订阅来完成此操作。将事件和设置e.Handled设置为true,然后在其他事件中检查它是否已被处理。还记得在离开WebView页面后更改行为。包含WebView的页面称为“Web”。我必须抑制MyFrame.GoBack事件,可能是这样的:private void MainPage_BackRequested(object sender,BackRequestedEventArgs e){if(MyFrame.Content==typeof(Web)){do back Navigation in the WebView“SearchURI”here}否则如果(MyFrame.CanGoBack){MyFrame.GoBack();e.Handled=true;}类似的方法可能会奏效,但我看不到Page类的BackPressed,您使用的模板是什么?这可能会因事件背后的处理方式而有所不同,但您可以使用简单的方法。这是我在应用程序开发方面的第一步,我只知道简单的东西;)但我不知道如何从主页访问“SearchURI”的状态。这太棒了!谢谢,这正是我想要的!:)@塞巴斯蒂安,如果这有帮助,请将其标记为答案。