使用windowsphone 8.1中的webview导航回列表框视图页面



我正在开发一款windows phone 8.1通用应用程序。我正在提取一个提要,然后将其显示在列表框中。提要中的每个项目都会将您带到一个网页。当有人单击列表框视图页中的某个项目时,我正在使用WebView控件来显示网页的内容。我可以在WebView控件中显示网页,但当我按下硬件后退按钮时,它会将我带回到主页(从那里开始),而不是列表框视图页。如何返回列表框视图页面,以便用户可以单击另一个项目在WebView控件中查看该项目?

这是我的XAML:

<WebView Grid.Row="0" Name="webBrowser1" Visibility="Collapsed"  Width="auto" Height="auto" Grid.RowSpan="2" NavigationCompleted="Mywebbrowser_LoadCompleted"/>

这是我在列表框视图页面上选择的更改代码,它将用户带到webview控件中的网页:

private void SearchListBox_SelectionChanged(对象发送方,SelectionChangedEventArgs e){ListBox-ListBox=发件人为ListBox;

  if (listBox != null && listBox.SelectedItem != null)
  {
      // Get the item that was tapped.
      SearchListItem sItem = (SearchListItem)listBox.SelectedItem;
      // Set up the page navigation only if a link actually exists in the feed item.
      if (sItem.Url.Length > 0)
      {
          // Get the associated URI of the feed item.
          Uri site = new Uri(sItem.Url.Replace("https", "http"));
          //Set up the app bar once the feed items are displayed in the web browser control 
          //appbar();
          // Show the progress bar.....
          mycontrols.progressbarShow(pgbar, pgText);
          //appbar_eh.appbarNoShow(ApplicationBar);
          //mycontrols_eh.progressbarShow(pgbar, pgText);
          webBrowser1.Visibility = Windows.UI.Xaml.Visibility.Visible;
          webBrowser1.Source = site;
      }
   }
}

编辑添加BackPressed处理程序:

void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e) 
{
    Frame frame = Window.Current.Content as Frame; 
    if (frame == null) 
    {
        return; 
    } 
    if (frame.CanGoBack) 
    { 
        frame.GoBack(); 
        e.Handled = true; 
        webBrowser1.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 
    } 
}

谢谢!

您当前如何处理HardwareButton.BackPressed事件?

由于它会返回到您的主页,而不是退出应用程序,因此您必须有一些处理程序(直接或通过库代码)。如果WebView处于打开状态而不是执行正常导航,则需要修改该代码以隐藏它。

如果使用NavigationHelper函数,则可以覆盖GoBack命令来执行此操作。

编辑:根据您添加的示例代码,这里有一种可能的方法。基本想法是关闭WebView,而不是调用Frame.GoBack,而不是同时执行这两个操作。Frame.GoBack调用会返回,所以如果你不想导航,就不要调用它。

void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e) 
{
    Frame frame = Window.Current.Content as Frame; 
    if (frame == null) 
    {
        return; 
    } 
    // Depending on the app there may be higher level state than 
    // directly checking the Visibility property 
    if (webBrowser1.Visibility == Windows.UI.Xaml.Visibility.Visible)
    {
        // If webBrowser is open then close it rather than
        // navigating to the previous page
        webBrowser1.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 
        e.Handled = true; 
    }
    else if (frame.CanGoBack) 
    { 
        frame.GoBack(); 
        e.Handled = true; 
    } 
}

相关内容

  • 没有找到相关文章

最新更新