在 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;
}
}
我的 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;
}
}