在Windows 8 Web视图中简单的导航

我正在将Windows Phone 8应用程序移植到平板电脑上,并且遇到了WebView API的问题。 在Windows Phone 8和Windows 8.1中, WebBrowserWebView控件都有一个GoBack()方法。 但是,我需要我的应用程序兼容Windows 8,其WebView API没有这样的方法。 是否有任何人用于Windows 8应用程序的替代品/解决方法?

最后,我刚刚写了一个WebView的包装器来管理导航堆栈。 这是相关的代码,对于任何有兴趣的人来说。 请注意,我只需要处理向后的导航,所以我使用了一个Stack 。 如果向前导航也是必需的,那么将Stack替换为List可能是有意义的,并且存储当前页面的索引。

 public class WebViewWrapper { private Stack<Uri> _navigationStack; private Uri _currentUri; public WebView WebView { get; private set; } public bool CanGoBack { get { return _navigationStack.Count > 0; } } public WebViewWrapper(WebView _webView) { _navigationStack = new Stack<Uri>(); WebView = _webView; WebView.LoadCompleted += (object s, NavigationEventArgs e) => { if (_currentUri != null) { _navigationStack.Push(_currentUri); } _currentUri = e.Uri; }; } public void GoBack() { if (CanGoBack) { _currentUri = null; WebView.Navigate(_navigationStack.Pop()); } } } 

使用的一个例子如下:

 // Code behind for a view called WebBrowserPage public sealed partial class WebBrowserPage : Page { private WebViewWrapper _webViewWrapper; public WebBrowserPage() { // webView is a WebView in the xaml with x:Name="webView" _webViewWrapper = new WebViewWrapper(webView); } // Other code for navigating to a Uri specified in a ViewModel. // Event handler for a back button press private void BackButton_Click(object sender, RoutedEventArgs e) { if (_webViewWrapper.CanGoBack) { _webViewWrapper.GoBack(); } else { // Code that executes a command in the ViewModel to leave the WebBrowserPage } } } 

WinRT XAML工具包有一个WebBrowser控件,但是我没有在任何应用程序中使用它,所以我不能保证它的质量。