Bagikan melalui


Menggunakan SDK Aplikasi Windows di aplikasi WPF

SDK Aplikasi Windows adalah evolusi berikutnya di platform pengembangan aplikasi Windows. Tetapi topik ini menunjukkan bagaimana Anda dapat menggunakan API SDK Aplikasi Windows (dan WINDOWS Runtime API) di aplikasi Windows Presentation Foundation (WPF) !

  • Dalam banyak kasus, Anda harus membuat ulang aplikasi WPF dalam bentuk aplikasi WinUI 3 . Hanya salah satu keuntungan pindah ke WinUI 3 adalah memiliki akses ke Sistem Fluent Design (juga lihat Desain dan kode aplikasi Windows). Dan WinUI 3 adalah bagian dari SDK Aplikasi Windows—jadi, secara alami, aplikasi WinUI 3 juga dapat menggunakan fitur dan API SDK Aplikasi Windows lainnya. Topik ini tidak mencakup proses migrasi aplikasi WPF Anda ke WinUI 3.
  • Tetapi jika Anda menemukan bahwa Anda menggunakan fitur WPF yang belum tersedia di WinUI 3, maka Anda masih dapat menggunakan fitur SDK Aplikasi Windows (seperti Siklus Hidup Aplikasi, MRT Core, DWriteCore, dan lainnya) di aplikasi WPF Anda. Topik ini menunjukkan caranya.

Dan jika Anda belum memiliki proyek WPF yang ada—atau Anda ingin mempraktikkan prosesnya—topik ini mencakup langkah-langkah untuk membuat proyek WPF sehingga Anda dapat mengikuti dan mengonfigurasinya untuk memanggil API SDK Aplikasi Windows.

Prasyarat

  1. Instal alat untuk SDK Aplikasi Windows.
  2. Topik ini mencakup aplikasi WPF yang tidak dikemas dan dikemas. Jika aplikasi WPF Anda tidak dikemas (aplikasi WPF mana secara default), pastikan bahwa semua dependensi untuk aplikasi yang tidak dikemas diinstal (lihat panduan penyebaran SDK Aplikasi Windows untuk aplikasi yang bergantung pada kerangka kerja yang dikemas dengan lokasi eksternal atau tidak dikemas). Cara cepat untuk melakukannya adalah dengan mengunjungi Unduhan terbaru untuk SDK Aplikasi Windows, lalu unduh dan unzip dan jalankan salah satu unduhan Runtime rilis yang stabil.

Penting

Versi Runtime yang Anda instal harus sesuai dengan versi paket NuGet Microsoft.WindowsAppSDK yang akan Anda instal di langkah selanjutnya.

Untuk informasi selengkapnya tentang istilah yang tidak dikemas dan dikemas, lihat Keuntungan dan kekurangan pengemasan aplikasi Anda.

Membuat proyek WPF jika Anda belum memilikinya

Jika Anda sudah memiliki proyek WPF, maka Anda dapat melanjutkan ke bagian berikutnya.

  1. Di Visual Studio, buat proyek Aplikasi C# WPF baru (yang merupakan proyek .NET). Berhati-hatilah bahwa Anda memilih templat proyek dengan nama aplikasi WPF yang tepat, dan bukan Aplikasi WPF (.NET Framework) satu.
  2. Beri nama proyek, dan terima opsi default apa pun.

Anda sekarang memiliki proyek yang membangun aplikasi WPF yang tidak dikemas.

Mengonfigurasi proyek WPF Anda untuk dukungan SDK Aplikasi Windows

Pertama, kita akan mengedit file proyek.

  1. Di Penjelajah Solusi, klik kanan proyek Anda, dan pilih Edit File Proyek.

  2. Langkah ini memungkinkan Anda memanggil API Windows Runtime (WinRT) (termasuk API SDK Aplikasi Windows). Di dalam elemen PropertyGroup adalah elemen TargetFramework, yang diatur ke nilai seperti net6.0. Tambahkan ke nilai kerangka kerja target moniker (khususnya, Moniker Kerangka Kerja Target). Misalnya, gunakan yang berikut ini jika aplikasi Anda menargetkan Windows 10, versi 2004:

    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    
  3. Juga di dalam elemen PropertyGroup, tambahkan elemen RuntimeIdentifiers, seperti yang ditunjukkan di bawah ini. Jika Anda menargetkan .NET 8 atau yang lebih baru, gunakan nilai win-x86;win-x64;win-arm64 sebagai gantinya.

    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    
  4. Secara default, aplikasi WPF tidak dikemas (artinya tidak diinstal dengan menggunakan MSIX). Aplikasi yang tidak dikemas harus menginisialisasi runtime SDK Aplikasi Windows sebelum menggunakan fitur lain dari SDK Aplikasi Windows. Anda dapat melakukannya secara otomatis saat aplikasi dimulai melalui inisialisasi otomatis. Anda baru saja mengatur (juga di dalam elemen PropertyGroup ) WindowsPackageType properti proyek dengan tepat, seperti ini:

    <WindowsPackageType>None</WindowsPackageType>
    

    Jika Anda memiliki kebutuhan lanjutan (seperti penanganan kesalahan kustom, atau untuk memuat versi SDK Aplikasi Windows tertentu), maka alih-alih inisialisasi otomatis, Anda dapat memanggil API bootstrapper secara eksplisit—untuk informasi selengkapnya, lihat Menggunakan runtime SDK Aplikasi Windows untuk aplikasi yang dikemas dengan lokasi eksternal atau tidak dikemas.

  5. Simpan dan tutup file proyek.

Selanjutnya, kita akan menginstal paket NuGet SDK Aplikasi Windows dalam proyek.

  1. Di Penjelajah Solusi, klik kanan simpul Dependensi proyek Anda, dan pilih Kelola Paket Nuget....
  2. Di jendela Pengelola Paket NuGet, pilih tab Telusuri, dan instal paket Microsoft.WindowsAppSDK stabil terbaru.

Menggunakan beberapa fitur SDK Aplikasi Windows di aplikasi WPF Anda

Bagian ini menawarkan contoh yang sangat sederhana untuk memanggil API SDK Aplikasi Windows dari aplikasi WPF. Ini menggunakan fitur MRT Core (lihat Mengelola sumber daya dengan MRT Core). Jika contoh ini berfungsi untuk proyek WPF Anda (dan jika Anda membuat yang baru untuk panduan ini, maka itu akan), maka Anda dapat mengikuti langkah-langkah ini.

  1. Tambahkan markup berikut ke MainWindow.xaml (Anda dapat menempelkannya di dalam Root Grid):

    <StackPanel>
        <Button HorizontalAlignment="Center" Click="Button_Click">Click me!</Button>
        <TextBlock HorizontalAlignment="Center" x:Name="myTextBlock">Hello, World!</TextBlock>
    </StackPanel>
    
  2. Sekarang kita akan menambahkan beberapa kode yang menggunakan kelas ResourceManager di SDK Aplikasi Windows untuk memuat sumber daya string.

    1. Tambahkan item File Sumber Daya (.resw) baru ke proyek Anda (biarkan dengan nama default Resources.resw).

    2. Dengan file sumber daya terbuka di editor, buat sumber daya string baru dengan properti berikut.

      • Nama: Pesan
      • Nilai: Halo, sumber daya!
    3. Simpan dan tutup file sumber daya.

    4. Di MainWindow.xaml.cs, tambahkan penanganan aktivitas berikut:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        // Construct a resource manager using the resource index generated during build.
        var manager = 
          new Microsoft.Windows.ApplicationModel.Resources.ResourceManager();
    
        // Look up a string in the resources file using the string's name.
        myTextBlock.Text = manager.MainResourceMap.GetValue("Resources/Message").ValueAsString;
    }
    
  3. Buat proyek, dan jalankan aplikasi. Klik tombol untuk melihat string Hello, resources! yang ditampilkan.

Tip

Jika pada runtime Anda melihat kotak pesan yang menunjukkan bahwa aplikasi memerlukan versi tertentu dari Windows App Runtime, dan menanyakan apakah Anda ingin menginstalnya sekarang, lalu klik Ya. Itu akan membawa Anda ke Unduhan terbaru untuk SDK Aplikasi Windows. Untuk informasi selengkapnya, lihat bagian Prasyarat di atas.

Lihat juga Arsitektur runtime untuk mempelajari selengkapnya tentang dependensi paket Framework yang dibutuhkan aplikasi Anda saat menggunakan SDK Aplikasi Windows, dan komponen tambahan yang diperlukan untuk bekerja di aplikasi yang tidak dikemas.

Mengemas dan menyebarkan aplikasi WPF Anda dengan MSIX

Beberapa fitur dan API Windows (termasuk API pemberitahuan SDK Aplikasi Windows) mengharuskan aplikasi Anda memiliki identitas paket saat runtime (dengan kata lain, aplikasi Anda perlu dipaketkan). Untuk informasi selengkapnya, lihat Fitur yang memerlukan identitas paket.

  1. Di Penjelajah Solusi di Visual Studio, klik kanan solusi, dan pilih Tambahkan>Proyek Baru....
  2. Dalam kotak dialog Tambahkan proyek baru, cari kemasan, pilih templat proyek Proyek Pengemasan Aplikasi C# Windows, dan klik Berikutnya.
  3. Beri nama proyek, dan klik Buat.
  4. Kami ingin menentukan aplikasi mana dalam solusi yang akan disertakan dalam paket. Jadi dalam proyek pengemasan (bukan proyek WPF), klik kanan simpul Dependensi , dan pilih Tambahkan Referensi Proyek....
  5. Dalam daftar proyek dalam solusi, pilih proyek WPF Anda, dan klik OK.
  6. Perluas node Aplikasi Dependensi>proyek pengemasan, dan konfirmasikan bahwa proyek WPF Anda direferensikan dan disorot dengan tebal. Ini berarti bahwa itu akan digunakan sebagai titik awal untuk paket.
  7. Klik kanan proyek pengemasan, dan pilih Atur Sebagai Proyek Startup.
  8. Klik kanan proyek WPF, dan pilih Edit File Proyek.
  9. Hapus <WindowsPackageType>None</WindowsPackageType>, simpan, dan tutup.
  10. Di menu drop-down Platform Solusi, pilih x64 (bukan Cpu Apa pun).
  11. Konfirmasikan bahwa Anda dapat membuat dan menjalankan.

Setelah mengemas aplikasi WPF, Anda dapat memanggil API yang memerlukan identitas paket. Jadi dalam MainWindow.xaml.cs, edit penanganan aktivitas Anda agar terlihat seperti ini:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var notification = new AppNotificationBuilder()
        .AddArgument("action", "viewConversation")
        .AddArgument("conversationId", "9813")
        .AddText("Andrew sent you a picture")
        .AddText("Check this out, The Enchantments in Washington!")
        .BuildNotification();

    AppNotificationManager.Default.Show(notification);
}

Bangun dan jalankan lagi. Klik tombol , dan konfirmasikan bahwa pemberitahuan toast ditampilkan. Ketika dipanggil dari proses yang tidak memiliki identitas paket pada runtime, API pemberitahuan melemparkan pengecualian.

Catatan

Langkah-langkah di bagian ini menunjukkan kepada Anda cara membuat aplikasi paket. Alternatifnya adalah membuat aplikasi paket dengan lokasi eksternal. Untuk pengingat semua istilah ini, lihat Keuntungan dan kekurangan kemasan aplikasi Anda.