Partage via


Migration de MRT vers MRT Core

Cette rubrique contient des conseils pour la migration du Système de gestion des ressources (ou MRT) d'UWP vers le MRT Core du SDK d’application Windows.

MRT Core est une version simplifiée de MRT. Pour plus d’informations, consultez Gérer les ressources avec MRT Core.

Résumé des différences d’API et/ou de fonctionnalités

Pour faciliter la migration, les API MRT Core sont très similaires aux API MRT. Pour obtenir la documentation de référence sur l’API, consultez l’espace de noms Microsoft.Windows.ApplicationModel.Resources.

Remarque

Toutes les API MRT n’existent pas dans MRT Core. Toutefois, toutes les API nécessaires pour les fonctionnalités de base de MRT sont incluses.

Modifier l’espace de noms

Dans UWP, les API MRT se trouvent dans l’espace de noms Windows.ApplicationModel.Resources.Core . Dans le SDK d’application Windows, les API MRT Core se trouvent dans l’espace de noms Microsoft.Windows.ApplicationModel.Resources . Vous devez donc modifier ce nom d’espace de noms dans votre code source (ajouter Microsoft. au début et supprimer le .Core nom à la fin).

Remarque

Dans windows App SDK 1.0 Preview 1 et versions ultérieures, les API MRT Core se trouvent dans l’espace de noms Microsoft.Windows.ApplicationModel.Resources . Dans les versions antérieures, elles se trouvent dans l’espace de noms Microsoft.ApplicationModel.Resources .

Classe ResourceManager

Cette section s’applique si vous utilisez la propriété Windows.ApplicationModel.Resources.Core.ResourceManager.Current dans votre application UWP.

// In a UWP app
using Windows.ApplicationModel.Resources.Core;
...
var currentResourceManager = ResourceManager.Current;
// In a UWP app
#include <winrt/Windows.ApplicationModel.Resources.Core.h>
using namespace winrt::Windows::ApplicationModel::Resources::Core;
...
auto currentResourceManager{ ResourceManager::Current() };

Au lieu de cela, dans votre application sdk d’application Windows, créez un nouveau Microsoft.Windows.ApplicationModel.Resources.ResourceManager.

// In a Windows App SDK app
using Microsoft.Windows.ApplicationModel.Resources;
...
var currentResourceManager = new ResourceManager();
// In a Windows App SDK app
#include <winrt/Microsoft.Windows.ApplicationModel.Resources.h>
using namespace winrt::Microsoft::Windows::ApplicationModel::Resources;
...
ResourceManager currentResourceManager;

ResourceContext.GetForCurrentView et ResourceContext.GetForViewIndependentUse

La classe MRT ResourceContext de UWP fait la distinction entre un ResourceContext pour l’affichage actuel et un pour une utilisation indépendante de l’affichage.

Pour la classe MrT Core ResourceContext du SDK d’application Windows, votre application doit déterminer le contexte approprié (valeurs de qualificateur de ressource) et les concepts de l’affichage actuel et de l’utilisation indépendante de l’affichage ne s’appliquent plus.

Valeurs de qualificateur de ressource

Dans mrT de UWP, les valeurs de qualificateur de contexte de ressource sont déterminées pour l’application. Dans MRT Core, seule la valeur de langue est remplie. Votre application doit déterminer d’autres valeurs pour elle-même. Voici un exemple, où il est supposé que votre vue XAML contient un élément nommé layoutRoot.

// In a Windows App SDK app
using Microsoft.Windows.ApplicationModel.Resources;
...
var currentResourceManager = new ResourceManager();
var resourceContext = currentResourceManager.CreateResourceContext();
int scaleFactor = Convert.ToInt32(layoutRoot.XamlRoot.RasterizationScale * 100);
resourceContext.QualifierValues[KnownResourceQualifierName.Scale] = scaleFactor.ToString();
string s = resourceContext.QualifierValues[KnownResourceQualifierName.Scale];
// In a Windows App SDK app
#include <winrt/Microsoft.Windows.ApplicationModel.Resources.h>
using namespace winrt::Microsoft::Windows::ApplicationModel::Resources;
...
ResourceManager currentResourceManager;
auto resourceContext{ currentResourceManager.CreateResourceContext() };
auto scaleFactor{ layoutRoot().XamlRoot().RasterizationScale() * 100 };
resourceContext.QualifierValues().Insert(L"Scale", std::to_wstring((int)scaleFactor));
auto s{ resourceContext.QualifierValues().Lookup(L"Scale") };

Modification de la valeur du qualificateur de ressource

MrT de UWP fournit l’événement ResourceQualifierObservableMap.MapChanged . Cette section s’applique si votre application UWP gère cet événement afin d’écouter les modifications de valeur de qualificateur.

MRT Core ne fournit aucune mécanique de notification autour des changements d’environnement. Par conséquent, votre application du Kit de développement logiciel (SDK) d’application Windows doit détecter de telles modifications si vous souhaitez mettre à jour les ressources en fonction des modifications de l’environnement.

Exemple d’application MRT Core

Consultez également les ressources de chargement à l’aide d’un exemple de projet d’application MRT Core , qui montre comment utiliser l’aire d’API MRT Core.