我正在开发使用Windows8RTM和C#的地铁应用程序(VS 2012 RTM),我被页面重新加载,谁能解释我如何重新加载页面而不用再次导航到相同的页面。简介:,我正在开发多语言支持的地铁应用程序。当用户选择语言时,我将通过下面的代码覆盖主要语言
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "de";并使用以下代码重新加载页面
this.Frame.Navigate(this.GetType());语言改为"de",但当我在页面上按下"Back“时,它将导航到相同的页面,而不是导航到以前的page.Did,我遗漏了一些东西,请有人解释一下如何做到这一点。提前感谢
发布于 2013-01-09 21:16:25
这将刷新页面:
var _Frame = Window.Current.Content as Frame;
_Frame.Navigate(_Frame.Content.GetType());
_Frame.GoBack(); // remove from BackStack作为警告,我的示例不考虑页面参数,您可能需要这样做。另外,另一个警告,我的样本重新加载你的页面两次。但是GoBack()是从BackStack中删除新条目所必需的。与WP不同,Frame没有Refresh()。而且,BackStack没有Remove()。
更新
我不再使用上述方法。我用这个:
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()); }
}发布于 2012-09-10 10:01:02
我不确定我完全明白你想做什么,所以这可能是错误的。
通过在刷新页面时调用该代码行,您将创建一个当前类型的全新对象并导航到该对象,这样就不会保存用户在当前页上所做的更改。
您是否使用任何类型的设计模式?对于这种情况,我使用MVVM (使用MVVM库),它实现了一个非常酷的导航服务,它将对类似的事情进行检查。
https://stackoverflow.com/questions/12349148
复制相似问题