Поделиться через


ResourceManager Класс

Определение

Предоставляет доступ к картам ресурсов приложения и расширенным функциональным возможностям ресурсов.

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
Наследование
Object Platform::Object IInspectable 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

Возвращает ResourceMap, связанный с пакетом main текущего запущенного приложения.

Методы

GetAllNamedResourcesForPackage(String, ResourceLayoutInfo)

Возвращает список всех именованных ресурсов для пакета приложения.

GetAllSubtreesForPackage(String, ResourceLayoutInfo)

Возвращает список всех коллекций поддеревьев ресурсов для пакета приложения.

IsResourceReference(String)

Определяет, соответствует ли предоставленная строка формату ссылки на ресурс (идентификатор URI строки ms-resource).

LoadPriFiles(IIterable<IStorageFile>)

Загружает один или несколько файлов индекса ресурсов пакета (PRI) и добавляет их содержимое в диспетчер ресурсов по умолчанию.

UnloadPriFiles(IIterable<IStorageFile>)

Выгружает один или несколько файлов индекса ресурсов пакета (PRI).

Применяется к

См. также раздел