Migração do MRT para MRT Core
Este tópico contém orientações para migrar do Sistema de Gerenciamento de Recursos da UWP (também conhecido como MRT) para o MRT Core do SDK de Aplicativo do Windows.
O MRT Core é uma versão simplificada do MRT. Para obter mais informações, consulte Gerenciar recursos com o MRT Core.
Resumo das diferenças de API e/ou recursos
Para facilitar a migração, as APIs do MRT Core são muito semelhantes às APIs do MRT. Para obter documentação de referência da API, consulte o namespace Microsoft.Windows.ApplicationModel.Resources.
Observação
Nem todas as APIs MRT existem no MRT Core. Mas todas as APIs necessárias para a funcionalidade básica do MRT estão incluídas.
Alterar namespace
Na UWP, as APIs MRT estão no namespace Windows.ApplicationModel.Resources.Core. No SDK de Aplicativos Windows, as APIs MRT Core estão no namespace Microsoft.Windows.ApplicationModel.Resources. Portanto, você precisará alterar o nome do namespace em seu código-fonte (adicione Microsoft.
no início e remova o .Core
no final).
Observação
No Windows App SDK 1.0 Preview 1 e versões posteriores, as APIs do MRT Core estão no namespace Microsoft.Windows.ApplicationModel.Resources. Em versões anteriores a isso, eles estão no namespace Microsoft.ApplicationModel.Resources .
Classe ResourceManager
Esta seção se aplica se você estiver usando a propriedade Windows.ApplicationModel.Resources.Core.ResourceManager.Current em seu aplicativo 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() };
Em vez disso, em seu aplicativo SDK de Aplicativos Windows, crie um novo 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 e ResourceContext.GetForViewIndependentUse
A classe MRT ResourceContext da UWP distingue entre um ResourceContext para o modo de exibição atual e um para uso independente do modo de exibição.
Para a classe MRT Core ResourceContext do SDK de Aplicativos Windows, seu aplicativo precisa determinar o contexto correto (valores de qualificador de recurso) e os conceitos de modo de exibição atual e uso independente de exibição não se aplicam mais.
- Portanto, se você estiver usando a API ResourceContext.GetForCurrentView ou a API ResourceContext.GetForViewIndependentUse , use ResourceManager.CreateResourceContext .
Valores do qualificador de recursos
No MRT da UWP, os valores de qualificador de contexto de recurso são determinados para o aplicativo. Enquanto no MRT Core, somente o valor do idioma é preenchido. Seu aplicativo precisa determinar outros valores para si mesmo. Aqui está um exemplo, onde se presume que sua exibição XAML contenha um elemento chamado 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") };
Alteração do valor do qualificador de recursos
O MRT da UWP fornece o evento ResourceQualifierObservableMap.MapChanged. E esta seção se aplica se seu aplicativo UWP estiver manipulando esse evento para ouvir as alterações de valor do qualificador.
O MRT Core não fornece nenhuma mecânica de notificação sobre alterações de ambiente. Portanto, seu aplicativo SDK de Aplicativos Windows precisa detectar essas alterações por conta própria se você deseja atualizar recursos com base em alterações de ambiente.
Um aplicativo de exemplo MRT Core
Consulte também o projeto de aplicativo de exemplo Carregar recursos usando MRT Core , que demonstra como usar a superfície da API MRT Core.
Tópicos Relacionados
Windows developer
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários