在 UWP 项目中引用多个资源字典

Refer multiple Resource Dictionaries in the UWP project

我的 UWP 应用有一个用于本地化的资源字典,名为“Resources.resx”,现在我想添加另一个“ResourcesXaml.resx”。我想知道如何像合并一样访问这两个文件。

代码如下。我想使用相同的 Get(string key) 方法并访问两个文件中的任何资源。如果有人能指出我需要做出的改变,我将不胜感激。干杯!

static ResourceHandler()
    {
        const string selectedLanguage = "en";
        Context = ResourceContext.GetForCurrentView();

        var lang = new List<string> { selectedLanguage };
        Context.Languages = lang;
        ResourceStringMap = ResourceManager.Current.MainResourceMap.GetSubtree("Resources");
    }

    public static string Get(string key)
    {
        return ResourceStringMap.GetValue(key, Context).ValueAsString;
    }

您可以创建两个 ResourceMaps 并在第一个查找失败时在第二个查找密钥,例如:

public static class ResourceHandler
{
    private const string SelectedLanguage = "en";
    private static readonly ResourceContext s_resourceContext = 
        new ResourceContext() { Languages = new string[1] { SelectedLanguage } };
    private static readonly ResourceMap s_resourcesMap =
        ResourceManager.Current.MainResourceMap.GetSubtree("Resources");
    private static readonly ResourceMap s_resourcesXamlMap =
        ResourceManager.Current.MainResourceMap.GetSubtree("ResourcesXaml");

    public static string Get(string key)
    {
        string s = s_resourcesMap.GetValue(key, s_resourceContext).ValueAsString;
        if (!string.IsNullOrEmpty(s))
            return s;

        return s_resourcesXamlMap.GetValue(key, s_resourceContext).ValueAsString;
    }
}