【发布时间】:2020-03-20 14:34:06
【问题描述】:
我们有一个用Pages 编写的应用程序,没有模式,我想使用 MVVM 重新编写它。目前我们使用Picker 进行语言选择,当文化发生变化时,我们再次设置所有label.Text 控件,以便用新语言重新绘制它们。
我使用 MVVM 重新编写了相同的页面,现在 Picker 中的 SelectedItem 绑定到 Language 对象。在 SelectedItem 的设置器中,我还更改了我的 resx (AppResources.Culture) 的文化,但绑定到它的 UI(例如 Text="{x:Static resources:AppResources.Title)不会更改语言。
我的SelectedItem setter 中的完整代码:
SetProperty(ref selectedLanguage, value);
AppResources.Culture = value.Culture;
cultureManager.SetLocale(value.Culture);
我应该如何更新我的 UI 的所有 Text?有没有什么干净的方法来做这样的事情,这似乎是一个基本的翻译需求......或者它不是应该完成的,尤其是在没有关闭视图/应用程序的情况下?
我发现使用 IMarkupExtension 和 this thread on Xamarin forums 进行本地化的方法最终有效地重新创建了页面...
我的目标是理想地重新加载文本,而无需使用 MVVM 和干净的代码重新创建视图/关闭应用程序。我有大约 10 个视图,所以它必须是可重复使用的。
【问题讨论】:
标签: xamarin xamarin.forms localization