ResourceManager Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bietet Zugriff auf Anwendungsressourcenzuordnungen und erweiterte Ressourcenfunktionen.
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
- Vererbung
- Attribute
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Beispiele
Dieses Beispiel basiert auf Szenario 10 des Anwendungsressourcen- und Lokalisierungsbeispiels. Eine vollständigere Lösung finden Sie im Beispiel.
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";
}
Eigenschaften
AllResourceMaps |
Ruft eine Zuordnung von ResourceMap-Objekten ab, die in der Regel den App-Paketen zugeordnet sind, indiziert nach Paketname. |
Current |
Ruft den ResourceManager für die derzeit ausgeführte Anwendung ab. |
DefaultContext |
Ruft den Standardmäßigen ResourceContext für die derzeit ausgeführte Anwendung ab. Sofern nicht explizit überschrieben, wird der Standardmäßige ResourceContext verwendet, um die am besten geeignete Darstellung einer bestimmten benannten Ressource zu bestimmen. Hinweis DefaultContext kann geändert oder nicht mehr für Releases verfügbar sein, nachdem Windows 8.1. Verwenden Sie stattdessen ResourceContext.GetForCurrentView. |
MainResourceMap |
Ruft die ResourceMap ab, die dem Standard-Paket der derzeit ausgeführten Anwendung zugeordnet ist. |
Methoden
GetAllNamedResourcesForPackage(String, ResourceLayoutInfo) |
Ruft eine Liste aller benannten Ressourcen für ein App-Paket ab. |
GetAllSubtreesForPackage(String, ResourceLayoutInfo) |
Ruft eine Liste aller Auflistungen von Ressourcenunterstrukturen für ein App-Paket ab. |
IsResourceReference(String) |
Bestimmt, ob eine angegebene Zeichenfolge mit dem Ressourcenverweisformat (einem URI-Bezeichner der ms-resource-Zeichenfolge) übereinstimmt. |
LoadPriFiles(IIterable<IStorageFile>) |
Lädt eine oder mehrere PRI-Dateien (Package Resource Index) und fügt deren Inhalt dem Standardressourcen-Manager hinzu. |
UnloadPriFiles(IIterable<IStorageFile>) |
Entlädt eine oder mehrere PRI-Dateien (Package Resource Index). |