Migrasi MRT ke MRT Core
Topik ini berisi panduan untuk bermigrasi dari Sistem Manajemen Sumber Daya UWP (juga dikenal sebagai MRT) ke MRT Core SDK Aplikasi Windows.
MRT Core adalah versi MRT yang efisien. Untuk informasi selengkapnya, lihat Mengelola sumber daya dengan MRT Core.
Ringkasan perbedaan API dan/atau fitur
Untuk kemudahan migrasi, API MRT Core sangat mirip dengan API MRT. Untuk dokumentasi referensi API, lihat namespace Layanan Microsoft.Windows.ApplicationModel.Resources.
Catatan
Tidak semua API MRT ada di MRT Core. Tetapi semua API yang diperlukan untuk fungsionalitas dasar MRT disertakan.
Mengubah namespace layanan
Di UWP, API MRT berada di namespace Layanan Windows.ApplicationModel.Resources.Core. Dalam SDK Aplikasi Windows, API MRT Core berada di namespace Microsoft.Windows.ApplicationModel.Resources. Jadi Anda harus mengubah nama namespace layanan tersebut di kode sumber Anda (tambahkan Microsoft.
di awal, dan hapus .Core
di akhir).
Catatan
Dalam SDK Aplikasi Windows 1.0 Pratinjau 1 dan rilis yang lebih baru, MRT Core API berada di namespace Microsoft.Windows.ApplicationModel.Resources. Dalam rilis yang lebih awal dari itu, mereka berada di namespace Microsoft.ApplicationModel.Resources .
Kelas ResourceManager
Bagian ini berlaku jika Anda menggunakan properti Windows.ApplicationModel.Resources.Core.ResourceManager.Current di aplikasi UWP Anda.
// 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() };
Sebagai gantinya, di aplikasi SDK Aplikasi Windows Anda, buat Microsoft.Windows.ApplicationModel.Resources.ResourceManager baru.
// 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, dan ResourceContext.GetForViewIndependentUse
Kelas MRT ResourceContext UWP membedakan antara ResourceContext untuk tampilan saat ini, dan satu untuk penggunaan independen tampilan.
Untuk kelas MRT Core ResourceContext SDK Aplikasi Windows, aplikasi Anda perlu menentukan konteks yang benar (nilai kualifikasi sumber daya), dan konsep tampilan saat ini dan penggunaan independen tampilan tidak lagi berlaku.
- Jadi, jika Anda menggunakan ResourceContext.GetForCurrentView API atau ResourceContext.GetForViewIndependentUse API, gunakan ResourceManager.CreateResourceContext sebagai gantinya.
Nilai kualifikasi sumber daya
Dalam MRT UWP, nilai kualifikasi konteks sumber daya ditentukan untuk aplikasi. Sementara di MRT Core, hanya nilai bahasa yang diisi. Aplikasi Anda perlu menentukan nilai lain untuk dirinya sendiri. Berikut adalah contoh, di mana diasumsikan tampilan XAML Anda berisi elemen bernama 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") };
Perubahan nilai kualifikasi sumber daya
MRT UWP menyediakan peristiwa ResourceQualifierObservableMap.MapChanged. Dan bagian ini berlaku jika aplikasi UWP Anda menangani peristiwa tersebut untuk mendengarkan perubahan nilai kualifikasi.
MRT Core tidak menyediakan mekanisme pemberitahuan apa pun sekeliling perubahan lingkungan. Jadi aplikasi SDK Aplikasi Windows Anda perlu mendeteksi perubahan tersebut sendiri jika Anda ingin memperbarui sumber daya berdasarkan perubahan lingkungan.
Aplikasi sampel MRT Core
Lihat juga muat sumber daya menggunakan proyek aplikasi sampel MRT Core, yang menunjukkan cara menggunakan permukaan MRT Core API.
Topik Terkait
Windows developer
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk