[英]ResourceLoader returns wrong language inside ViewModel
我正在使用Template10制作UWP应用程序,并且目前在我的项目中有此文件夹结构用于本地化:
Localization
|_en
| |_Resources.resw
|_it-IT
|_Resources.resw
默认的应用程序语言是en,而我当前的文化是it-IT。 资源文件是正确的,并且行为在应用程序中是一致的,始终始终显示意大利语版本。
我在View的代码内部使用ResourceLoader类就很好了,但是只要我在ViewModel内使用它,即使它不存在,它也总是返回英语本地化(=空字符串,尽管它存在于意大利语文件中) 。
我在VM中使用它是因为我正在创建一个新角色,并为其赋予默认名称(“无名称”)作为用户的占位符,将名称绑定在视图内。
这是我使用的代码:
public class CharacterManagerViewModel : ViewModelBase
{
public Character Character { get; set; }
private ResourceLoader loader = new ResourceLoader();
public override async void OnNavigatedTo(object parameter, NavigationMode mode, IDictionary<string, object> state)
{
if (parameter == null)
{
//Creating a default empty character
Character = new Character();
Character.Name = loader.GetString("NewCharacterName");
}
else
{
//Loading from the Model
}
}
}
当我调用GetString()方法时,当前的文化是it-IT,但是某种程度上框架忽略了它。 我究竟做错了什么?
我发现了问题的根源:在模型内部,为了简化起见,我以一种将代码切入的方法,从应用程序中包含的XML文件中为“字符”对象加载了一些数据。
在该方法内部,我将区域性更改为InvariantCulture,以确保格式独立于用户的格式。 在该方法的最后,我将其更改回用户的文化,但有些地方出了问题。
我进行两次交换后会发生此问题,此问题随后会反映到整个软件中,即使对于View中的本地化字符串也是如此。
该问题不依赖于ViewModel,我将继续处理该问题,如果找不到任何内容,我将发布一个新问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.