繁体   English   中英

ResourceLoader在ViewModel中返回错误的语言

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM