首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在地铁应用程序C#中重新加载页面

在地铁应用程序C#中重新加载页面
EN

Stack Overflow用户
提问于 2012-09-10 09:47:45
回答 2查看 13.1K关注 0票数 21

我正在开发使用Windows8RTM和C#的地铁应用程序(VS 2012 RTM),我被页面重新加载,谁能解释我如何重新加载页面而不用再次导航到相同的页面。简介:,我正在开发多语言支持的地铁应用程序。当用户选择语言时,我将通过下面的代码覆盖主要语言

代码语言:javascript
运行
复制
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "de";

并使用以下代码重新加载页面

代码语言:javascript
运行
复制
this.Frame.Navigate(this.GetType());

语言改为"de",但当我在页面上按下"Back“时,它将导航到相同的页面,而不是导航到以前的page.Did,我遗漏了一些东西,请有人解释一下如何做到这一点。提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-09 21:16:25

这将刷新页面:

代码语言:javascript
运行
复制
var _Frame = Window.Current.Content as Frame;
_Frame.Navigate(_Frame.Content.GetType());
_Frame.GoBack(); // remove from BackStack
  • 处理OnNavigatingFrom()可以保存页面的数据和状态。
  • 处理OnNavigatingTo()可以加载页面的数据和状态。

作为警告,我的示例不考虑页面参数,您可能需要这样做。另外,另一个警告,我的样本重新加载你的页面两次。但是GoBack()是从BackStack中删除新条目所必需的。与WP不同,Frame没有Refresh()。而且,BackStack没有Remove()。

更新

我不再使用上述方法。我用这个:

代码语言:javascript
运行
复制
public bool Reload() { return Reload(null); }
private bool Reload(object param)
{
    Type type = this.Frame.CurrentSourcePageType;
    if (this.Frame.BackStack.Any())
    {
        type = this.Frame.BackStack.Last().SourcePageType;
        param = this.Frame.BackStack.Last().Parameter;
    }
    try { return this.Frame.Navigate(type, param); }
    finally { this.Frame.BackStack.Remove(this.Frame.BackStack.Last()); }
}
票数 16
EN

Stack Overflow用户

发布于 2012-09-10 10:01:02

我不确定我完全明白你想做什么,所以这可能是错误的。

通过在刷新页面时调用该代码行,您将创建一个当前类型的全新对象并导航到该对象,这样就不会保存用户在当前页上所做的更改。

您是否使用任何类型的设计模式?对于这种情况,我使用MVVM (使用MVVM库),它实现了一个非常酷的导航服务,它将对类似的事情进行检查。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12349148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档