当前位置: 首页 > 知识库问答 >
问题:

在windows Phone8.1中使用webview导航回列表框视图页

南门刚捷
2023-03-14

我正在开发一个windows Phone8.1通用应用程序。我正在提取一个提要,然后将其显示在列表框中。提要中的每个项都将您带到一个web页面。当有人单击列表框视图页中的某个项时,我使用WebView控件来显示网页的内容。我可以在WebView控件中显示web页面,但是当我按下硬件后退按钮时,它会将我带回到主页面(我开始的地方),而不是列表框视图页面。如何返回到列表框视图页,以便用户可以单击另一项以在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=sender as 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;
      }
   }
}

编辑添加的反向处理程序:

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; 
    } 
}

共有1个答案

程胡非
2023-03-14

您当前如何处理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; 
    } 
}
 类似资料:
  • 我有一个抽屉布局片段(在主活动中),它显示了一个可扩展的列表,当我点击扩展项目的子项时,会出现一个弹出窗口。这个具有自定义布局的弹出窗口包含文本视图、列表视图和2个按钮。 我给列表视图提供了id:,并在onCreateView函数中从视图组返回空值,如下所示: 并使类扩展的片段不是列表片段 我执行了前面的3个步骤,以避免出现“Content has view with id attribute'a

  • 我的ListView自定义适配器(及其新实现的viewHolder)有一些问题。我有一个列表视图,每个项目都有一个复选框(这里没有新内容)。问题是,如果我的列表中有超过9个项目,当我选中第一个复选框时,第十个将自动选中(第二个与第十一个相同),就像两个项目都有一个监听器一样(我认为在某种程度上是这样)。 我在这里读到了listView、视图回收和ViewHolder解决它的方法的位置问题:如何使我

  • 我有一个ViewPagerContainer片段,在应用程序启动时加载。ViewPagerContainer片段将两个选项卡(选项卡A和选项卡B)添加到操作栏。选项卡B有两个项目的列表视图。 我所做的:我在选项卡B片段中的列表视图项上附加了一个click listener,这样当用户单击一个项时,它会在第一个片段(即选项卡B下)内打开另一个片段(子片段)。 我陷入困境的地方:当用户按下后退按钮时,

  • 本文向大家介绍Django框架中的对象列表视图使用示例,包括了Django框架中的对象列表视图使用示例的使用技巧和注意事项,需要的朋友参考一下 direct_to_template 毫无疑问是非常有用的,但Django通用视图最有用的地方是呈现数据库中的数据。 因为这个应用实在太普遍了,Django带有很多内建的通用视图来帮助你很容易 地生成对象的列表和明细视图。 让我们先看看其中的一个通用视图:

  • 问题内容: 我正在尝试在导航栏的中心添加自定义视图,并且正在使用以下代码对其进行测试: 我在视图控制器的viewDidLoad方法中进行设置,但是当我运行程序时,导航栏中似乎没有任何变化。 你能帮我吗? 问题答案: 这可行。初始化时给框架