ResourceManager 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对应用程序资源映射和更高级的资源功能的访问。
public ref class ResourceManager sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ResourceManager final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ResourceManager
Public NotInheritable Class ResourceManager
- 继承
- 属性
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)
|
示例
此示例基于 应用程序资源和本地化示例的方案 10。 有关更完整的解决方案,请参阅示例。
private void SearchMultipleResourceIds(string language, string scale, string contrast, string homeRegion)
{
// use a cloned context for this scenario so that qualifier values set
// in this scenario don't impact behavior in other scenarios that
// use a default context for the view (crossover effects between
// the scenarios will not be expected)
ResourceContext context = ResourceContext.GetForCurrentView().Clone();
context.QualifierValues["language"] = language;
context.QualifierValues["scale"] = scale;
context.QualifierValues["contrast"] = contrast;
context.QualifierValues["homeregion"] = homeRegion;
var resourceIds = new string[] { "LanguageOnly", "ScaleOnly", "ContrastOnly", "HomeRegionOnly", "MultiDimensional" }
var dimensionMap = ResourceManager.Current.MainResourceMap.GetSubtree("dimensions");
foreach (var id in resourceIds)
{
NamedResource namedResource;
if (dimensionMap.TryGetValue(id, out namedResource))
{
var resourceCandidates = namedResource.ResolveAll(context);
string candidateInfo = ShowCandidates(id, resourceCandidates);
}
}
Console.WriteLine(candidateInfo);
}
private string ShowCandidates(string resourceId, IReadOnlyList<ResourceCandidate> resourceCandidates)
{
// print 'resourceId', 'found value', 'qualifier info', 'matching condition'
string outText = "resourceId: dimensions\\" + resourceId + "\r\n";
int i = 0;
foreach (var candidate in resourceCandidates)
{
var value = candidate.ValueAsString;
outText += " Candidate " + i.ToString() + ":" + value + "\r\n";
foreach (var qualifier in candidate.Qualifiers)
{
var qualifierName = qualifier.QualifierName;
var qualifierValue = qualifier.QualifierValue;
outText += " Qualifier: " + qualifierName + ": " + qualifierValue + "\r\n";
outText += " Matching: IsMatch (" + qualifier.IsMatch.ToString() + ") " + "IsDefault (" + qualifier.IsDefault.ToString() + ")" + "\r\n";
}
i++;
}
return outText + "\r\n";
}
void SDKTemplate::Scenario10::Scenario10Button_Show_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
Button^ b = safe_cast<Button^>(sender);
if (b != nullptr)
{
// use a cloned context for this scenario so that qualifier values set
// in this scenario don't impact behavior in other scenarios that
// use a default context for the view (crossover effects between
// the scenarios will not be expected)
auto context = ResourceContext::GetForCurrentView()->Clone();
auto selectedLanguage = Scenario10ComboBox_Language->SelectedValue;
auto selectedScale = Scenario10ComboBox_Scale->SelectedValue;
auto selectedContrast = Scenario10ComboBox_Contrast->SelectedValue;
auto selectedHomeRegion = Scenario10ComboBox_HomeRegion->SelectedValue;
if (selectedLanguage != nullptr)
{
context->QualifierValues->Insert("language", selectedLanguage->ToString());
}
if (selectedScale != nullptr)
{
context->QualifierValues->Insert("scale", selectedScale->ToString());
}
if (selectedContrast != nullptr)
{
context->QualifierValues->Insert("contrast", selectedContrast->ToString());
}
if (selectedHomeRegion != nullptr)
{
context->QualifierValues->Insert("homeregion", selectedHomeRegion->ToString());
}
Platform::Collections::Vector<String^>^ resourceIds = ref new Platform::Collections::Vector<String^>();
resourceIds->Append("LanguageOnly");
resourceIds->Append("ScaleOnly");
resourceIds->Append("ContrastOnly");
resourceIds->Append("HomeRegionOnly");
resourceIds->Append("MultiDimensional");
Scenario10_SearchMultipleResourceIds(context, resourceIds);
}
}
void SDKTemplate::Scenario10::Scenario10_SearchMultipleResourceIds(ResourceContext^ context, Platform::Collections::Vector<String^>^ resourceIds)
{
Scenario10TextBlock->Text = "";
auto dimensionMap = ResourceManager::Current->MainResourceMap->GetSubtree("dimensions");
for (unsigned int it = 0; it < resourceIds->Size; it++)
{
String^ id = resourceIds->GetAt(it);
NamedResource^ namedResource = dimensionMap->Lookup(id);
if (namedResource)
{
auto resourceCandidates = namedResource->ResolveAll(context);
Scenario10_ShowCandidates(resourceIds->GetAt(it), resourceCandidates);
}
}
}
void SDKTemplate::Scenario10::Scenario10_ShowCandidates(String^ resourceId, Windows::Foundation::Collections::IVectorView<ResourceCandidate^>^ resourceCandidates)
{
// print 'resourceId', 'found value', 'qualifier info', 'matching condition'
String^ outText = "resourceId: dimensions\\" + resourceId + "\r\n";
for(unsigned int i =0; i < resourceCandidates->Size; i++)
{
ResourceCandidate^ candidate = resourceCandidates->GetAt(i);
auto value = candidate->ValueAsString;
outText += " Candidate " + i.ToString() + ":" + value + "\r\n";
for (unsigned int j = 0; j < candidate->Qualifiers->Size; j++)
{
auto qualifier = candidate->Qualifiers->GetAt(j);
auto qualifierName = qualifier->QualifierName;
auto qualifierValue = qualifier->QualifierValue;
outText += " Qualifier: " + qualifierName + ": " + qualifierValue + "\r\n";
outText += " Matching: IsMatch (" + qualifier->IsMatch.ToString() + ") " + "IsDefault (" + qualifier->IsDefault.ToString() + ")" + "\r\n";
}
}
this->Scenario10TextBlock->Text += outText + "\r\n";
}
属性
AllResourceMaps |
获取通常与应用包关联的 ResourceMap 对象的映射,并按包名称编制索引。 |
Current |
获取当前正在运行的应用程序的 ResourceManager 。 |
DefaultContext |
获取当前正在运行的应用程序的默认 ResourceContext 。 除非显式重写,否则默认 ResourceContext 用于确定任何给定命名资源的最合适的表示形式。 注意 defaultContext 在Windows 8.1后可能会更改或不可用于发布。 请改用 ResourceContext.GetForCurrentView。 |
MainResourceMap |
获取与当前正在运行的应用程序的 main 包关联的 ResourceMap。 |
方法
GetAllNamedResourcesForPackage(String, ResourceLayoutInfo) |
获取应用包的所有命名资源的列表。 |
GetAllSubtreesForPackage(String, ResourceLayoutInfo) |
获取应用包的所有资源子树集合的列表。 |
IsResourceReference(String) |
确定提供的字符串是否与) ms-resource 字符串 URI 标识符 (资源引用格式匹配。 |
LoadPriFiles(IIterable<IStorageFile>) |
加载一个或多个包资源索引 (PRI) 文件,并将其内容添加到默认资源管理器。 |
UnloadPriFiles(IIterable<IStorageFile>) |
卸载一个或多个包资源索引 (PRI) 文件。 |