Migração do MRT para o MRT Core
Este tópico contém diretrizes para migrar do Sistema de Gerenciamento de Recursos da UWP (também conhecido como MRT) para o MRT Core do SDK do Aplicativo 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 a 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 do MRT estão no namespace Windows.ApplicationModel.Resources.Core . No SDK do Aplicativo Windows, as APIs do MRT Core estão no namespace Microsoft.Windows.ApplicationModel.Resources. Portanto, você precisará alterar esse nome de namespace no código-fonte (adicione Microsoft.
no início e remova o .Core
no final).
Observação
No SDK do Aplicativo Windows versão prévia 1.0 e versões posteriores, as APIs do MRT Core estão no namespace Microsoft.Windows.ApplicationModel.Resources. Em versões anteriores a essa, elas 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 do Aplicativo 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 a exibição atual e outro para uso independente de exibição.
Para a classe ResourceContext do MRT Core do SDK do Aplicativo Windows, seu aplicativo precisa determinar o contexto correto (valores do qualificador de recursos) e os conceitos 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 do qualificador de contexto de recurso são determinados para o aplicativo. Enquanto estiver no MRT Core, somente o valor do idioma é preenchido. Seu aplicativo precisa determinar outros valores para si mesmo. Aqui está um exemplo, em que supõe-se que sua exibição XAML contém 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 recurso
O MRT da UWP fornece o evento ResourceQualifierObservableMap.MapChanged . E esta seção se aplica se o aplicativo UWP está tratando esse evento para ouvir as alterações de valor do qualificador.
O MRT Core não fornece nenhuma mecânica de notificação em relação às alterações de ambiente. Portanto, seu aplicativo SDK do Aplicativo Windows precisa detectar essas alterações por conta própria se você quiser atualizar recursos com base em alterações de ambiente.
Um aplicativo de exemplo do MRT Core
Consulte também o projeto Carregar recursos usando o aplicativo de exemplo MRT Core , que demonstra como usar a superfície da API do MRT Core.
Tópicos Relacionados
Windows developer
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de