Aracılığıyla paylaş


WPF uygulamasında Windows App SDK kullanma

Windows App SDK Windows app geliştirme platformundaki bir sonraki evrimdir. Ancak bu konuda, Windows Presentation Foundation (WPF) uygulamasında Windows App SDK API'leri (ve Windows Runtime API'leri) nasıl kullanabileceğiniz gösterilmektedir!

  • Çoğu durumda, WPF uygulamanızı WinUI 3 uygulaması biçiminde yeniden oluşturmak istersiniz. WinUI'ye geçmenin avantajlarından sadece bir tanesidir Fluent Design System'a erişim sağlamak (ayrıca bkz. Design and code Windows apps). WinUI de Windows App SDK bir parçasıdır; bu nedenle, doğal olarak, bir WinUI uygulaması diğer Windows App SDK özelliklerini ve API'lerini de kullanabilir. Bu konu başlığında, WPF uygulamanızı WinUI'ye geçirme işlemi ele alınmıyor.
  • Ancak henüz WinUI'de bulunmayan WPF özelliklerini kullandığınızı fark ederseniz, WPF uygulamanızda Windows App SDK özelliklerini (Uygulama Yaşam Döngüsü, MRT Core, DWriteCore ve diğerleri gibi) kullanmaya devam edebilirsiniz. Bu konu size nasıl yapılacağını gösterir.

Ayrıca mevcut bir WPF project yoksa veya işlemi uygulamak istiyorsanız, bu konu başlığında Windows App SDK API'leri çağıracak şekilde izleyebileceğiniz ve yapılandırabileceğiniz bir WPF project oluşturma adımları yer alır.

Önkoşullar

  1. Windows App SDK için araçları yükleyin.
  2. Bu konu hem paketlenmemiş hem de paketlenmiş WPF uygulamalarını kapsar. WPF uygulamanız paketten çıkarılmışsa (varsayılan olarak paketlenmemiş olan WPF uygulamaları), paketlenmemiş uygulamalar için tüm bağımlılıkların yüklendiğinden emin olun. Çerçeveye bağımlı uygulamalar için, dış konumla paketlenmiş veya paketlenmemiş Windows App SDK dağıtım kılavuzuna bakın. Windows App SDK için En Son İndirmeler sayfasını ziyaret etmek, ardından kararlı sürüm Çalışma Zamanı indirmelerinden birini indirip açarak ve çalıştırarak hızlı bir yol bulabilirsiniz.

Önemli

Yüklediğiniz Çalışma Zamanı sürümünün, sonraki bir adımda yüklenecek Microsoft.WindowsAppSDK NuGet paketinin sürümüyle eşleşmesi gerekir.

Paketlenmemiş ve paketlenmiş koşulları hakkında daha fazla bilgi için bkz. uygulamanızı paketlemenin avantajları ve dezavantajları.

Eğer henüz bir WPF projeniz yoksa, bir WPF projesi oluşturun.

Zaten bir WPF project varsa sonraki bölüme geçebilirsiniz.

  1. Visual Studio yeni bir C# WPF Application project oluşturun (bu bir .NET project). project şablonunu WPF App (.NET Framework) değil WPF Application tam adıyla seçmeye dikkat edin.
  2. project bir ad verin ve varsayılan seçenekleri kabul edin.

Artık paketlenmemiş bir WPF uygulaması oluşturan bir projeye sahipsiniz.

Windows App SDK desteği için WPF projenizi yapılandırın

İlk olarak project dosyasını düzenleyeceğiz.

  1. Solution Explorer'da project sağ tıklayın ve Project Dosyasını Düzenle'i seçin.

  2. Bu adım, Windows Runtime (WinRT) API'lerini (Windows App SDK API'leri) çağırmanızı sağlar. PropertyGroup öğesinin içinde, net6.0 gibi bir değere ayarlanmış TargetFramework öğesi bulunur. Bu hedef çerçeve değerine bir takma ad (özellikle bir Hedef Çerçeve Takma Adı) ekleyin. Örneğin, uygulamanız Windows 10 sürüm 2004'i hedeflediyse aşağıdakileri kullanın:

    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
  3. Ayrıca PropertyGroup öğesinin içine aşağıda gösterildiği gibi bir RuntimeIdentifiers öğesi ekleyin. 8 veya sonraki .NET hedeflediyseniz bunun yerine win-x86;win-x64;win-arm64 değerini kullanın.

    <RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
    
  4. Varsayılan olarak, bir WPF uygulaması paketten çıkarılır (yani MSIX kullanılarak yüklenmez). Paketlenmemiş bir uygulamanın, Windows App SDK başka bir özelliğini kullanmadan önce Windows App SDK çalışma zamanını başlatması gerekir. Bunu, uygulamanız otomatik başlatma yoluyla başlatıldığında otomatik olarak yapabilirsiniz. WindowsPackageType öğesinin içinde, proje özelliğini uygun bir şekilde aşağıdaki gibi hemen ayarladınız:

    <WindowsPackageType>None</WindowsPackageType>
    

    Gelişmiş gereksinimleriniz varsa (örneğin, özel hata işleme, veya Windows App SDK belirli bir sürümünü yüklemek için), ardından auto-initialization yerine önyükleyici API'sini açıkça çağırabilirsiniz; daha fazla bilgi için bkz. Dış konumla paketlenmiş veya paketlenmemiş uygulamalar için Windows App SDK çalışma zamanını kullanma.

  5. project dosyasını kaydedin ve kapatın.

Ardından, projeye Windows App SDK NuGet paketini yükleyeceğiz.

  1. Solution Explorer'da, project Dependencies düğümüne sağ tıklayın ve Nuget Paketlerini Yönet... öğesini seçin. .
  2. NuGet Package Manager penceresinde Browse sekmesini seçin ve Latest stableMicrosoft.WindowsAppSDK paketini yükleyin.

WPF uygulamanızda bazı Windows App SDK özelliklerini kullanma

Bu bölüm, WPF bir uygulamadan Windows App SDK API'lerini çağırmaya çok basit bir örnek sunar. MRT Core özelliğini kullanır (bkz. MRT Core ile kaynakları yönetme). Bu örnek WPF project için çalışıyorsa (ve bu kılavuz için yeni bir tane oluşturduysanız, o zaman çalışır), bu adımları izleyebilirsiniz.

  1. Aşağıdaki işaretlemeyi MainWindow.xaml'e ekleyin (bunu kök Kılavuziçine yapıştırabilirsiniz).

    <StackPanel>
        <Button HorizontalAlignment="Center" Click="Button_Click">Click me!</Button>
        <TextBlock HorizontalAlignment="Center" x:Name="myTextBlock">Hello, World!</TextBlock>
    </StackPanel>
    
  2. Şimdi dize kaynağını yüklemek için Windows App SDK ResourceManager sınıfını kullanan bazı kodlar ekleyeceğiz.

    1. Projenize yeni bir Resources Dosyası (.resw) öğesi ekleyin ve varsayılan adı olarak Resources.resw bırakın.

    2. Kaynak dosyası düzenleyicide açıkken aşağıdaki özelliklere sahip yeni bir dize kaynağı oluşturun.

      • Ad: İleti
      • Değer: Merhaba, kaynaklar!
    3. Kaynaklar dosyasını kaydedin ve kapatın.

    4. içine MainWindow.xaml.csaşağıdaki olay işleyicisini ekleyin:

    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. project oluşturun ve uygulamayı çalıştırın. Dize Hello, resources!'ı görüntülemek için düğmeye tıklayın.

Tavsiye

Çalışma zamanında uygulamanın Windows App Çalışma Zamanı'nın belirli bir sürümüne ihtiyacı olduğunu belirten bir ileti kutusu görürseniz ve şimdi yüklemek isteyip istemediğinizi sorarsanız Yes öğesine tıklayın. Bu sizi Windows App SDK için En son indirmelere götürecek. Daha fazla bilgi için yukarıdaki Önkoşullar bölümüne bakın.

Ayrıca uygulamanızın Windows App SDK kullandığında aldığı Framework paket bağımlılığı ve paketlenmemiş bir uygulamada çalışmak için gereken ek bileşenler hakkında daha fazla bilgi edinmek için bkz. Runtime architecture.

MSIX ile WPF uygulamanızı paketleme ve dağıtma

Bazı Windows özellikleri ve API'leri (Windows App SDK notifications API'leri dahil) uygulamanızın çalışma zamanında package identity olmasını gerektirir (başka bir deyişle uygulamanızın packaged) olması gerekir. Daha fazla bilgi için bkz. Paket kimliği gerektiren özellikler.

  1. Visual Studio Solution Explorer'da çözüme sağ tıklayın ve Add>Yeni Project... öğesini seçin. .
  2. Yeni bir project ekle iletişim kutusunda packaging için arama yapın, C# Windows Uygulama Paketleme Project project şablonunu seçin ve İleri'e tıklayın.
  3. project adlandırın ve Oluştur öğesine tıklayın.
  4. Çözümdeki hangi uygulamaların pakete dahil edileceklerini belirtmek istiyoruz. Paketleme projesinde (WPF projesi değil), Dependencies düğümüne sağ tıklayın ve Proje Başvurusu Ekle... öğesini seçin.
  5. Çözümdeki proje listesinde, WPF project seçin ve OK öğesine tıklayın.
  6. Paketleme projesinin Dependencies>Applications düğümünü genişletin ve WPF projenizin referans alındığını ve kalın yazıyla vurgulandığını onaylayın. Bu, paketin başlangıç noktası olarak kullanılacağı anlamına gelir.
  7. Paketleme projesine sağ tıklayın ve Başlangıç Projesi Olarak Ayarla öğesini seçin.
  8. WPF project sağ tıklayın ve Project Dosyasını Düzenle öğesini seçin.
  9. Silin <WindowsPackageType>None</WindowsPackageType>, kaydedin ve kapatın.
  10. Çözüm Platformları açılan menüsünde, Herhangi bir CPUyerine, x64 seçin.
  11. Oluşturup çalıştırabileceğinizi onaylayın.

artık WPF uygulamanızı paketlediğinize göre, paket kimliği gerektiren API'leri çağırabilirsiniz. Bu nedenle içinde MainWindow.xaml.cs, olay işleyicinizi şu şekilde görünecek şekilde düzenleyin:

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);
}

Yeniden oluşturun ve çalıştırın. Düğmeye tıklayın ve kısa bir bildirim mesajı görüntülendiğini onaylayın. Çalışma zamanında paket kimliği olmayan bir işlemden çağrıldığında, bildirim API'leri bir istisna fırlatır.

Uyarı

Bu bölümdeki adımlarda paketlenmiş bir uygulamanın nasıl oluşturulacağı gösterilir. Alternatif olarak,dış konumuna sahip paketlenmiş bir uygulama oluşturabilirsiniz. Tüm bu terimleri hatırlatmak için bkz. Uygulamanızı paketlemenin avantajları ve dezavantajları.