gpt4 book ai didi

c# - 在 Metro 应用程序 C# 中重新加载页面

转载 作者:IT王子 更新时间:2023-10-29 04:35:12 26 4
gpt4 key购买 nike

我正在使用 Windows 8 RTM 和 C#(VS 2012 RTM) 开发 Metro 应用程序,我无法重新加载页面,任何人都可以向我解释如何重新加载页面而无需再次导航到同一页面。简介:我正在开发支持多语言的 Metro 应用程序。当用户选择语言时,我将通过以下代码覆盖主要语言

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "de";

并使用此代码重新加载页面

this.Frame.Navigate(this.GetType());

语言更改为“de”,但是当我在页面上按“后退”时,它会导航到同一页面而不是导航到上一页。我错过了什么吗,有人可以解释一下如何做到这一点。提前致谢

最佳答案

这将刷新您的页面:

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()。

更新

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

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

关于c# - 在 Metro 应用程序 C# 中重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com