ResourceManager Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce l'accesso alle mappe delle risorse dell'applicazione e funzionalità di risorse più avanzate.
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
- Ereditarietà
- Attributi
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Esempio
Questo esempio si basa sullo scenario 10 delle risorse dell'applicazione e dell'esempio di localizzazione. Vedere l'esempio per la soluzione più completa.
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";
}
Proprietà
AllResourceMaps |
Ottiene una mappa degli oggetti ResourceMap in genere associati ai pacchetti dell'app, indicizzati in base al nome del pacchetto. |
Current |
Ottiene ResourceManager per l'applicazione attualmente in esecuzione. |
DefaultContext |
Ottiene il valore predefinito ResourceContext per l'applicazione attualmente in esecuzione. A meno che non venga eseguito l'override esplicito, il valore predefinito ResourceContext viene usato per determinare la rappresentazione più appropriata di qualsiasi risorsa denominata specificata. Nota DefaultContext può essere modificato o non disponibile per le versioni dopo Windows 8.1. Usare invece ResourceContext.GetForCurrentView. |
MainResourceMap |
Ottiene ResourceMap associato al pacchetto principale dell'applicazione attualmente in esecuzione. |
Metodi
GetAllNamedResourcesForPackage(String, ResourceLayoutInfo) |
Ottiene un elenco di tutte le risorse denominate per un pacchetto dell'app. |
GetAllSubtreesForPackage(String, ResourceLayoutInfo) |
Ottiene un elenco di tutte le raccolte di sottoalberi delle risorse per un pacchetto dell'app. |
IsResourceReference(String) |
Determina se una stringa specificata corrisponde al formato di riferimento della risorsa (identificatore URI stringa ms-resource). |
LoadPriFiles(IIterable<IStorageFile>) |
Carica uno o più file PRI (Package Resource Index) e aggiunge il contenuto alla gestione risorse predefinita. |
UnloadPriFiles(IIterable<IStorageFile>) |
Scarica uno o più file PRI (Package Resource Index). |