ResourceLoader returns ViewModel 中的语言错误

ResourceLoader returns wrong language inside ViewModel

我正在使用 Template10 制作一个 UWP 应用程序,目前我的项目中有这个文件夹结构用于本地化:

Localization
|_en
|  |_Resources.resw
|_it-IT
   |_Resources.resw

应用默认语言是en,我现在的文化是it-IT。 资源文件正确且行为在整个应用程序中保持一致,始终首先显示意大利语版本。

我在 View 的代码后面使用 ResourceLoader class 就好了,但只要我在 ViewModel 中使用它,它总是 returns 英文本地化,即使它没有存在(= 空字符串,尽管它存在于意大利语文件中)。

我在 VM 中使用它是因为我正在创建一个新角色并给它一个默认名称 ("No name"),作为用户的占位符,将名称绑定到视图中。

这是我使用的代码:

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 个文件中为 "Character" 对象加载了一些数据。

在该方法中,我将区域性更改为 InvariantCulture 以确保格式独立于用户的格式。 在该方法的最后,我将其改回用户的文化,但有些地方出了问题。

这个问题发生在我进行双重交换之后,它会在之后反映到整个软件,即使是来自视图的本地化字符串也是如此。

这个问题不依赖于 ViewModel,我会解决这个问题,如果我找不到任何东西,我会 post 一个新问题。