【问题标题】:Windows Phone 8: Back ButtonWindows Phone 8:返回按钮
【发布时间】:2013-06-12 12:38:12
【问题描述】:

我是 Windows Phone 平台的新手。我正在尝试制作新闻应用程序。在这个应用程序中,用户点击并阅读新闻文章,之后,用户想回到主页再次查看所有新闻标题,并再次点击其他新闻。

但是当用户在阅读第一篇文章后返回主页时,用户点击了第二个新闻标题。但是当用户导航到新页面时,第一篇新闻文章仍然存在。

我想问一下,当用户按下返回主页时,是否有任何返回按钮供用户(在阅读第一篇新闻文章后)用于清除文章页面的缓存?

我用过这个,但没有;

private void ApplicationBarIconButton_Click_1(object sender, EventArgs e)
{
    NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}

我在我的 httprequest 下写了一些东西,但它也对我不起作用;

private void LiveLongListSelector_Loaded(object sender, RoutedEventArgs e)
{
    string url = "MYWEBAPIURL&rnd=" + new Random().Next(1,1000);
    HttpWebRequest hWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
    hWebRequest.Method = "GET";
    hWebRequest.BeginGetResponse(ResponseLive_Completed, hWebRequest);
    hWebRequest.Headers[HttpRequestHeader.CacheControl] = "no-cache";
    hWebRequest.Headers[HttpRequestHeader.CacheControl] = "no-cache";
    hWebRequest.Headers["Cache-Control"] = "no-cache";
    hWebRequest.Headers["Pragma"] = "no-cache";
}

谁能帮我找到完美的后退按钮或其他东西?

非常感谢

【问题讨论】:

  • 在第二页,您使用哪种方法获取主页列表中选择的新闻文章?
  • 我使用“protected override void OnNavigatedTo”来获取文章的 id 并在其下方发出请求..

标签: c# windows-phone-7 xaml windows-phone-8


【解决方案1】:

只需使用NavigationService.GoBack(); 而不是使用

NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

它会自动清除所有捕获。

或者您可以在再次阅读第二篇文章时使用NavigationService.RemoveBackEntry();。 使用类似的东西-

int a = NavigationService.BackStack.Count();
while (a > number) //number is stack count when comes to main page first time
{
     this.NavigationService.RemoveBackEntry();
     a = NavigationService.BackStack.Count();
}

【讨论】:

  • NavigationService.goBack();现在好多了,但是。我认为应用程序将数据保留 10 秒。如果我在进入主页后等待 10 秒,点击新文章,没问题,它会显示。我一直数它的 10-15 秒..
【解决方案2】:

PhoneApplicationPage 上有两种方法可以覆盖和清理缓存:OnNavigatedToOnNavigatedFrom

【讨论】:

  • 我将向“OnNavigatedFrom”方法写入什么?我使用“OnNavigatedTo”方法在我的其他页面中查看详细信息。你能帮帮我吗?
  • @kgms21 NavigationService.GoBack() 是正确的答案,在这种情况下,页面实例不会保存在内存中,您无需应用任何逻辑来清理缓存数据。我很困惑,我以为问题是关于缓存清理的,抱歉。
【解决方案3】:

我建议在 NavigatedTo() 方法中使用以下代码:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    while (NavigationService.RemoveBackEntry() != null);
}

希望,这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多