C# UWP如何在不重新导航的情况下刷新文本

C# UWP如何在不重新导航的情况下刷新文本,c#,uwp,win-universal-app,multilingual,C#,Uwp,Win Universal App,Multilingual,我有一个多语言应用程序,允许用户使用下拉菜单切换语言。它工作正常,但切换语言时速度太慢,因为我需要重新导航到当前帧。这是因为我需要重新加载我的产品(这需要一点时间) 这是我的密码: var culture = new System.Globalization.CultureInfo(sLang); Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name; Windows.Applic

我有一个多语言应用程序,允许用户使用下拉菜单切换语言。它工作正常,但切换语言时速度太慢,因为我需要重新导航到当前帧。这是因为我需要重新加载我的产品(这需要一点时间)

这是我的密码:

 var culture = new System.Globalization.CultureInfo(sLang);
 Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name;
 Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset();
 Windows.ApplicationModel.Resources.Core.ResourceContext.GetForViewIndependentUse().Reset();

 Frame.Navigate(Frame.CurrentSourcePageType);  //I want to avoid this as calling this will re-initialize my page - which in turn re-load my products
我的问题是,是否有一种方法可以强制所有具有x:Uid的组件从资源文件(例如Strings/en-US/Resources.resw)重新加载,而无需调用Frame.Navigate()

在WinForm中,我可以执行以下操作:

System.Resources.ResourceManager rm = new System.Resources.ResourceManager(typeof(MainForm));
foreach (Control ctl in this.Controls)
{
    rm.ApplyResources(ctl, ctl.Name);
}
UWP中是否有任何等价物?还是有更好的方法来解决我的问题

谢谢

我用它来通知我的数据发生了变化。如果我没有错,您希望在xaml元素更改时通知它的内容(例如文本)。然后需要使用绑定


希望有帮助

我尝试不使用绑定,因为(首先)我需要创建一个类,然后将所有字符串资源加载到该类,然后绑定它。但是关于语言的变化,我需要以某种方式通知这些变化。这将需要对我的代码进行大量更改。因此,我的问题是如何强制从资源文件重新加载组件。不要这样认为,一旦“INotifyPropertyChanged”和准备就绪,您就必须实现。然后您只需更改值以使用来自viewmodel的不同资源,就可以了!是的,我知道。我已经考虑过使用绑定,但是我需要在代码中做很多修改。我希望答案与我的问题保持一致。我所有的GUI组件都带有x:Uid。我只需要强制刷新GUI。你找到答案了吗?我也很感兴趣。是的,但这是一种人工过程。我创建了一个基类,它具有覆盖函数
ReloadLang()
。一旦更改了语言(通过下拉菜单),我会手动为每个控件调用这个
ReloadLang()
,并重新加载文本。这就是为什么我没有把它作为一个答案,希望有人能想出一个更好的解决办法。