Migration de MRT vers MRT Core
Cette rubrique contient des conseils pour la migration du système de gestion des ressources d’UWP (également appelé MRT) vers le MRT Core de l’Windows App SDK.
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 les API, consultez l’espace de noms Microsoft.Windows.ApplicationModel.Resources.
Notes
Toutes les API MRT n’existent pas dans MRT Core. Mais 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 Windows App SDK, 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 (ajoutez Microsoft.
au début et supprimez le .Core
à la fin).
Notes
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, ils 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 Windows App SDK, créez un 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 d’UWP fait la distinction entre un ResourceContext pour la vue actuelle et un pour une utilisation indépendante de l’affichage.
Pour la classe MRT Core ResourceContext du Windows App SDK, votre application doit déterminer le contexte correct (valeurs de qualificateur de ressource) et les concepts d’affichage actuel et d’utilisation indépendante de l’affichage ne s’appliquent plus.
- Par conséquent, si vous utilisez l’API ResourceContext.GetForCurrentView ou ResourceContext.GetForViewIndependentUse , utilisez Plutôt ResourceManager.CreateResourceContext .
Valeurs de qualificateur de ressource
Dans le MRT d’UWP, les valeurs du qualificateur de contexte de ressource sont déterminées pour l’application. Dans MRT Core, seule la valeur de langue est renseignée. Votre application doit déterminer d’autres valeurs pour elle-même. Voici un exemple, où votre vue XAML est supposée contenir 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
Le MRT d’UWP fournit l’événement ResourceQualifierObservableMap.MapChanged . Et 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 aucun mécanisme de notification concernant les modifications d’environnement. Par conséquent, votre application Windows App SDK doit détecter ces modifications par elle-même si vous souhaitez mettre à jour les ressources en fonction des modifications apportées à l’environnement.
Exemple d’application MRT Core
Consultez également l’exemple de projet d’application Charger des ressources à l’aide de MRT Core , qui montre comment utiliser la surface de l’API MRT Core.
Rubriques connexes
Windows developer
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour