Windows 8手机,多标签浏览器无法更新当前网址

时间:2014-08-09 16:22:50

标签: c# list windows-phone-8 tabs browser

我正在制作多标签浏览器并遇到了一些问题。我希望当用户使用按钮添加新标签时,他们然后选择导航到的每个网站都会更新到标签网址。因此,如果用户更改了标签或打开了新标签,那么如果它们返回到上一个标签页,则会保存最后一个网站。

以下是创建新标签时的代码&从创建的选项卡中选择选项卡

private void addNewTab(string url)
{
    TabEntry urlObj = new TabEntry();
    urlObj.URL = url;
    urlObj.timestamp = DateTime.Now.ToString("HH:mm");
    if (url.Contains("/"))
    {
        urlObj.Name = url.Remove(url.IndexOf('/'));
    }
    else
    {
        urlObj.Name = url.Remove(url.IndexOf('.'));
    }

    tabs.Insert(0, urlObj);

    listBoxTabPage.ItemsSource = null;
    listBoxTabPage.ItemsSource = tabs;

    Browser.Navigate(new Uri("http://www.google.com", UriKind.Absolute));
    //selectedTab = listBoxTabPage.SelectedValue as TabEntry;
    }

    private void ListBoxTabPage_SelectionChanged(object sender, GestureEventArgs e)
    {
        selectedTab = listBoxTabPage.SelectedValue as TabEntry;
        Browser.Navigate(new Uri("http://www." + selectedTab.URL, UriKind.Absolute));
        PivotItems.SelectedItem = BrowserPage;
    }

以下是应在Browser_Navigated方法中更新所选标签网址的代码

void Browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
    _deactivatedURL = e.Uri;
    _progressIndicator.IsVisible = false;

    string url = Convert.ToString(e.Uri);

    //selectedTab.URL = url;
    addHistoryRecord(url);

}

如果它被评论出来,我认为是问题所在。我相信代码不知道哪个是selectedTab。要修复此错误,我应该每次浏览器导航时创建一个更新选项卡网址的方法。该程序如何知道当前正在使用哪个选项卡。

如果您需要更多详细信息,请发表评论,我将很乐意进一步详细解释。

1 个答案:

答案 0 :(得分:2)

在将标签设置为listBoxTabPage.ItemsSource = null之前,您只需设置ItemsSource即可。它可能会清除您的listBoxTabPage.SelectedValue

我认为你可以在listBoxTabPage.SelectedValue = urlObj中设置addNewTab()

然后您开始导航到ListBoxTabPage_SelectionChanged中的新uri,但是您只需将前缀字符串http://www.附加到完整网址似乎是错误的。如果您导航到不存在的网站,它可能会触发NavigateFailed事件。

Browser.Navigate(new Uri("http://www." + selectedTab.URL, UriKind.Absolute));

更重要的是,ListBoxTabPage_SelectionChanged可能会触发两次,因为旧值已清除并且新值已设置。