Dil

Uygulama pencerelerini yönetme

Windows Uygulama SDK'sı, HWND'nin üst düzey soyutlamasını temsil eden Microsoft.UI.Windowing.AppWindow sınıfını sağlar. Uygulamanızdaki bir AppWindow ile en üst düzey HWND arasında 1:1 eşlemesi vardır. AppWindow ve ilgili sınıfları, HWND'ye doğrudan erişmeye gerek kalmadan uygulamanızın üst düzey pencerelerinin birçok yönünü yönetmenize olanak sağlayan API'ler sağlar.

Uyarı

Bu makalede, AppWindow API'lerin uygulamanızda nasıl kullanılacağı gösterilmektedir. Önkoşul olarak, WinUI veya başka bir UI framework'ü kullanmanız fark etmeksizin, AppWindow bilgilerinin yer aldığı WinUI 3 ve Windows Uygulama SDK'sı için Windowing genel bakışını okumanızı ve anlamanızı öneririz.

WinUI 3 Galeri simgesi WinUI 3 Galeri uygulaması, WinUI denetimlerinin ve özelliklerinin etkileşimli örneklerini içerir. uygulamayı Microsoft Store adresinden alın veya GitHub üzerindeki kaynak koduna göz atın.

AppWindow API'lerini Windows Uygulama SDK'sı tarafından desteklenen herhangi bir UI çerçevesiyle kullanabilirsiniz: WinUI, WPF, WinForms veya Win32. AppWindow API'ler çerçeveye özgü pencereleme API'leri ile birlikte çalışır:

Api'leri genellikle aşağıdakiler için kullanırsınız AppWindow :

  • Uygulamanızın penceresinin boyutunu ve konumunu yönetin.

  • Pencere başlığını, simgesini ve başlık çubuğu rengini yönetme; veya AppWindowTitleBar API'leri ile tamamen özel bir başlık çubuğu oluşturun.

    Daha fazla bilgi ve örnek için bkz. Başlık çubuğu özelleştirmesi .

  • AppWindowPresenter tarafından türetilen API'ler ile pencerenin görünümünü ve davranışını yönetin.

Değişikliklere AppWindow yanıt ver

değişikliklerine AppWindow , Changed olayını işleyerek ve ardından ne tür bir değişiklik olduğunu belirlemek için olay bağımsız değişkenlerini (AppWindowChangedEventArgs) denetleyerek yanıt verirsiniz. İlgilendiğiniz değişiklik gerçekleştiyse, bu değişikliği yanıtlayabilirsiniz. Olası değişiklikler konum, boyut, sunucu, görünürlük ve z sırasıdır.

Aşağıda AppWindow.Changed olayı için bir olay işleyicisi örneği verilmiştir.

private void AppWindow_Changed(AppWindow sender, AppWindowChangedEventArgs args)
{
    // ConfigText and SizeText are TextBox controls defined in XAML for the page.
    if (args.DidPresenterChange == true)
    {
        ConfigText.Text = sender.Presenter.Kind.ToString();
    }

    if (args.DidSizeChange == true)
    {
        SizeText.Text = sender.Size.Width.ToString() + ", " + sender.Size.Height.ToString();
    }
}

Window boyut ve yerleştirme

sınıfı, AppWindow pencerenin boyutunu ve yerleşimini yönetmek için kullanabileceğiniz çeşitli özelliklere ve yöntemlere sahiptir.

Kategori Özellikler
Salt okunur özellikler Konum, Boyut, İstemciBoyutu
Events Değiştirildi (DidPositionChange, DidSizeChange)
Boyut ve konum yöntemleri Taşı, Yeniden Boyutlandır, ResizeClient, MoveAndResize
Z sırası yöntemleri MoveInZOrderAtBottom, MoveInZOrderAtTop, MoveInZOrderBelow

Yeni bir pencere boyutu belirtmek için Resize çağrısı yapın.

Bu örnekte, kod MainWindow.xaml.cs içindedir, bu nedenle Window.AppWindow özelliğini kullanarak AppWindow örneğini alabilirsiniz.

public MainWindow()
{
    InitializeComponent();
    AppWindow.Resize(new Windows.Graphics.SizeInt32(1200, 800));
}

Pencerenin konumunu değiştirmek için Move yöntemini çağırın.

Bu örnek, kullanıcı bir düğmeye tıkladığında pencereyi ekranda ortalanacak şekilde taşır.

Bu, Page sınıfının kod dosyasında oluşur, bu nedenle Window veya AppWindow nesnelerine otomatik olarak erişiminiz olmaz. AppWindow almak için birkaç seçeneğiniz vardır.

private void MoveWindowButton_Click(object sender, RoutedEventArgs e)
{
    AppWindow appWindow = AppWindow.GetFromWindowId(XamlRoot.ContentIslandEnvironment.AppWindowId);
    RectInt32? area = DisplayArea.GetFromWindowId(appWindow.Id, DisplayAreaFallback.Nearest)?.WorkArea;
    if (area == null) return;
    appWindow.Move(new PointInt32((area.Value.Width - appWindow.Size.Width) / 2, (area.Value.Height - appWindow.Size.Height) / 2));
}

Pencere boyutunu mantıksal piksel cinsinden ayarlama (deneysel)

Önemli

Bu bölümdeki Window boyutlandırma özellikleri, Windows Uygulama SDK'sı 2.3 Experimental A'da kullanıma sunulan deneysel API'lerdir. API'ler deneysel olarak işaretlenmiştir ve gelecekteki bir sürümde değişebilir veya kaldırılabilir. Bunları üretim uygulamalarında kullanmayın. İndirme bağlantıları için bkz. En son Windows Uygulama SDK'sı indirmeleri.

AppWindow.Resize ve AppWindow.ResizeClient, fiziksel piksel cinsinden boyutlar alır. Farklı ölçek faktörlerine sahip ekranlarda aynı boyutu elde etmek için değerleri kendiniz dönüştürmeniz gerekir. Deneysel sürümlerde Microsoft.UI.Xaml.Window sınıfı, pencerenin istemci alanının boyutunu cihazdan bağımsız pikseller (DIP) olarak da adlandırılan mantıksal pikseller cinsinden alan ve ayarlayan özelliklere sahiptir. Pencere geçerli görüntü ölçeğinin değerlerini dönüştürür, bu nedenle Width değeri 640 olan bir istemci alanı 100% ölçekte 640 fiziksel piksel genişliğinde ve 150% ölçekte 960 fiziksel piksel genişliğindedir. Bu özellikleri XAML'de veya kodda, Window.AppWindow özelliğini kullanmadan ayarlayabilirsiniz.

Mülkiyet Description
Genişlik, Yükseklik Pencere geri yüklendi durumundayken istemci alanının boyutu.
MinWidth, MinHeight Kullanıcının pencereyi yeniden boyutlandırabileceği en küçük istemci alanı. Varsayılan değer 0’dır.
MaxWidth, MaxHeight Kullanıcının pencereyi yeniden boyutlandırabileceği en büyük istemci alanı. Varsayılan değer pozitif sonsuzdur ve bu da maksimum değer olmadığı anlamına gelir.

Bu örnek, XAML dosyasındaki bir pencerenin ilk boyutunu ve boyut sınırlarını ayarlar.

<Window
    x:Class="MyApp.SettingsWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="640"
    Height="480"
    MinWidth="320"
    MinHeight="240"
    MaxWidth="960"
    MaxHeight="720">
    <TextBlock Margin="24" Text="Resize this window." />
</Window>

Bu örnek, kodda oluşturduğu bir pencere için C# dilinde aynı değerleri ayarlar.

Window window = new Window
{
    Width = 640,
    Height = 480,
    MinWidth = 320,
    MinHeight = 240,
    MaxWidth = 960,
    MaxHeight = 720,
    Content = new TextBlock { Margin = new Thickness(24), Text = "Resize this window." }
};

// A size that you set before the first call to Activate is applied when the window is shown.
window.Activate();

Bu tablo, Window özelliklerinin AppWindow boyutlandırma API'leriyle nasıl ilişkili olduğunu gösterir. Örneğin, AppWindow.Resize(new SizeInt32(1200, 800)) kenarlık ve başlık çubuğu da dahil olmak üzere tüm pencereyi 1200 x 800 fiziksel piksel yapar. Height 1200 ve Width 800 olarak ayarlandığında, istemci alanı 1200 x 800 mantıksal piksel boyutunda olur; bu da %150 ölçekteki bir ekranda 1800 x 1200 fiziksel piksele karşılık gelir.

API Neyi boyutlandırır Units
Window. Genişlik, Window. Yükseklik (deneysel) Geri yüklenen pencerenin istemci alanı. Değerleri alabilir ve ayarlayabilirsiniz. Mantıksal pikseller
Window.Sınır Mevcut çalışma alanı. Read-only. Mantıksal piksel
AppWindow.Yeniden boyutlandır Kenarlık ve başlık çubuğu da dahil olmak üzere tüm pencere. Fiziksel pikseller
AppWindow.ResizeClient Müşteri alanı. Fiziksel pikseller
AppWindow.Size, AppWindow.ClientSize Geçerli pencere ve istemci alanı. Read-only. Fiziksel pikseller

Boyutlandırma özelliklerini kullanırken Window şu davranışları aklınızda bulundurun:

  • Normal boyut. Pencere ekranı kapladığında veya simge durumuna küçültüldüğünde, Width ve Height, geri yüklendiğinde pencerenin geri döndüğü istemci boyutunu döndürür. Onları bu durumda ayarlarsanız, geri yüklenen boyut değişir ve pencere ekranı kaplamış veya simge durumuna küçültülmüş olarak kalır. Pencerede FullScreenPresenter veya CompactOverlayPresenter kullanılıyorsa, pencere bir OverlappedPresenter’a geri döndüğünde ayarladığınız bir boyut uygulanır.
  • Boyut sınırları.MinWidth, MinHeight, MaxWidth ve MaxHeight, pencere varsayılan presenter olan OverlappedPresenter kullanırken geçerli olur. Pencere sunucusunun PreferredMinimumWidth, PreferredMinimumHeight, PreferredMaximumWidth ve PreferredMaximumHeight özelliklerini sizin için ayarlar ve pencere farklı bir ölçeğe sahip bir ekrana geçtiğinde bunları güncelleştirir. Window özellikleri aracılığıyla sınırladığınız bir boyut için bu sunum katmanı özelliklerini kendiniz ayarlamayın. Sunucu özellikleri hakkında daha fazla bilgi için bkz. ÖrtüşenPresenter'ı değiştirme.
  • Maksimize edilmiş boyut. Sunum yapanın PreferredMaximumWidth ve PreferredMaximumHeight özellikleri gibi, MaxWidth ve MaxHeight pencere büyütüldüğünde bile boyutunu sınırlar. Örneğin, pencereyi önceki örneklerden en üst düzeye çıkardığınızda, istemci alanı daha büyük bir ekranda bile 960 x 720 mantıksal pikselden büyük değildir.
  • Geçerli değerler. Height ve Width değerlerini en düşük ve en yüksek sınırlar arasında ayarlayın. Width, Height, MinWidth, ve MinHeight sonlu ve 0 veya daha büyük olmalıdır. MaxWidth ve MaxHeight, 0 veya daha büyük ya da maksimum olmaması için pozitif sonsuz olmalıdır. Diğer değerler, ayarlayıcının bir özel durum fırlatmasına neden olur; C# dilinde bunun karşılığı ArgumentException’dır.

AppWindowPresenter sınıfı ve alt sınıfları

Her AppWindow birinde bir AppWindowPresenter (sunum arayüzü) uygulanır. Sistem tarafından bir gösterici oluşturulur ve oluşturma anında bir AppWindow bileşene uygulanır. AppWindowPresenter'ın her alt sınıfı, pencerenin amacına uygun önceden tanımlanmış bir yapılandırma sağlar. Bu AppWindowPresenter türetilmiş sunum biçimleri sağlanır ve bunlar desteklenen tüm işletim sistemi sürümlerinde mevcuttur.

  • CompactOverlayPresenter

    Resim içinde resim benzeri deneyimlere olanak sağlamak için 16:9 en boy oranıyla sabit boyutta her zaman üstte olan bir pencere yapılandırılır. Varsayılan olarak InitialSizeCompactOverlaySize.Small şeklindedir, ancak bunu Medium veya Large olarak değiştirebilirsiniz. öğesini de çağırabilirsiniz AppWindow. 16:9 en boy oranını geçersiz kılmak için yeniden boyutlandırın ve pencereyi istediğiniz boyutta yapın.

  • FullScreenPresenter

    Video izlemeye uygun tam ekran deneyimi sağlamak için bir pencere yapılandırılır. Pencerede kenarlık veya başlık çubuğu yoktur ve sistem görev çubuğunu gizler.

  • ÇakışanÖner

    Varsayılan olarak yeniden boyutlandırma tutamaçlarına sahip bir kenarlık ve simge durumuna küçültme/büyütme/geri yükleme düğmeleri içeren bir başlık çubuğu sağlayan standart pencere yapılandırması.

Uyarı

Win32 uygulama modeline yeni bir kavram olarak, bir sunum, pencere durumu ve stillerinin bir kombinasyonuna benzer ama aynı şey değildir. Bazı sunum düzenleyicileri, klasik pencere durumunun ve stil özelliklerinin sınırları dışındaki (otomatik gizlenen başlık çubuğu gibi) kontrol edilemeyen davranışlara da sahiptir.

Varsayılan sunum yapan kişi

Oluşturulduğunda uygulanan AppWindow varsayılan sunucu, varsayılan özellik ayarlarına sahip bir OverlappedPresenter örneğidir. Başka bir sunum seçici uyguladıktan sonra bir pencere için varsayılan sunum seçicisine geri dönmek için bir başvuru tutmanıza gerek yoktur. Bunun nedeni, sistemin bu sunucunun oluşturulduğu AppWindow için yaşam süresi boyunca aynı örneği tutmasıdır; ve AppWindow parametresiyle .SetPresenter yöntemini çağırarak onu yeniden uygulayabilirsiniz.

Önemli

SetPresenter(AppWindowPresenterKind.Default) çağrısı, AppWindow ile oluşturulan varsayılan sunucu örneğini tekrar uygular. Başka bir sunumcu oluşturup uyguladıysanız ve daha sonra yeniden uygulamak istiyorsanız, sunumcunuza referansını saklamanız gerekir.

Ayrıca varsayılan sunumcu örneğine başvuru alabilir ve bunu değiştirebilirsiniz. Yeni bir sunucu uyguladıysanız, önce burada gösterildiği gibi varsayılan sunucunun uygulandığından emin olun:

appWindow.SetPresenter(AppWindowPresenterKind.Default);
OverlappedPresenter defaultPresenter = (OverlappedPresenter)appWindow.Presenter;
defaultPresenter.IsMaximizable = false;
defaultPresenter.IsMinimizable = false;

ÖrtüşenÖnericiyi Değiştirme

OverlappedPresenter, çeşitli yollarla yapılandırabileceğiniz esnek bir sunucudur.

Create* yöntemleri, varsayılan özellik ayarlarına sahip çakışmalı bir sunumcu veya belirli bir kullanım için önceden yapılandırılmış özellik ayarlarına sahip bir sunumcu oluşturmanıza olanak tanır.

Bu tabloda, her yöntemden bir OverlappedPresenter nesnesi oluşturduğunuzda yapılandırma özelliklerinin nasıl ayarlandığı gösterilir.

Mülkiyet Create CreateForContextMenu CreateForDialog CreateForToolWindow
HasBorder true true true true
HasTitleBar true false true true
IsAlwaysOnTop false false false false
MaksimizeEdilebilirMi true false false true
IsMinimizable true false false true
IsModal false false false false
IsResizable true false false true

Etkin sunum nesnesi canlı bir nesnedir. AppWindow.Presenter nesnesinin herhangi bir özelliği değiştirildiğinde, değişiklik anında etkili olur. Bu değişiklikleri size bildirecek olay yoktur, ancak geçerli değerlerin özelliklerini istediğiniz zaman de kontrol edebilirsiniz.

HasBorder ve HasTitleBar özellikleri salt okunur durumdadır. SetBorderAndTitleBar yöntemini (SetBorderAndTitleBar(bool hasBorder, bool hasTitleBar)) çağırarak bu değerleri ayarlayabilirsiniz. Örtüşen Presenter, kenarlık olmadan bir başlık çubuğuna sahip olamaz. Eğer hasTitleBar parametresi true ise, o zaman hasBorder parametresi de true olmalıdır. Aksi takdirde, şu iletiyle bir özel durum oluşturulur:

The parameter is incorrect.
Invalid combination: Border=false, TitleBar=true.

Araç çubuğundaki büyütme düğmesini gizlemek için IsMaximizablefalse olarak ayarlayın. PreferredMaximumHeight veya PreferredMaximumWidth özelliklerini ayarlarsanız, bu özellikler pencere boyutunu ekranı kaplamış durumda bile kısıtladığı için bunu yapmanızı öneririz. Bu, Maximize yöntemine yapılan çağrıları etkilemez.

Araç çubuğundaki küçültme düğmesini gizlemek için IsMinimizablefalse olarak ayarlayın. Bu, Minimize yöntemine yapılan çağrıları etkilemez.

Yeniden boyutlandırma denetimlerini gizlemek ve kullanıcının pencereyi yeniden boyutlandırmasını önlemek için olarak ayarlayın. Bu, AppWindow.Resize yöntemine yapılan çağrıları etkilemez.

Bu pencereyi diğer pencerelerin üzerinde tutmak için IsAlwaysOnToptrue olarak ayarlayın. Yöntemlerden herhangi birini AppWindow.MoveInZOrder* çağırırsanız, bu özellik olsa bile pencerenin z sırasını değiştirmek için etkili olmaya truedevam eder.

Kullanıcının pencereyi genişletebileceği boyut üst sınırını kısıtlamak için PreferredMaximumHeight ve PreferredMaximumWidth'i ayarlayın. IsMaximizable öğesini false olarak ayarlamanızı öneririz, eğer maksimum boyut özelliklerini ayarladıysanız; bu özellikler ekran tamamen kaplandığında bile pencere boyutunu kısıtlar. Bu özellikler, AppWindow.Resize çağrılarını da etkiler; pencere, belirtilen en yüksek yükseklik ve genişliği aşacak şekilde yeniden boyutlandırılamaz.

Kullanıcının pencereyi küçültebileceği en düşük boyutu ayarlamak için PreferredMinimumHeight ve PreferredMinimumWidth değerlerini ayarlayın. Bu özellikler, AppWindow.Resize çağrılarını da etkiler; pencere, belirtilen minimum yükseklik ve genişlikten daha küçük olacak şekilde yeniden boyutlandırılmaz.

IsModal ayarını true olarak ayarlayarak bir modal pencere oluşturabilirsiniz. Modal pencere, kapatılana kadar sahip penceresi ile etkileşimi engelleyen ayrı bir penceredir. Ancak, modül pencere oluşturmak için sahip pencereyi de ayarlamanız gerekir; aksi takdirde, şu iletiyle bir hata oluşur:

The parameter is incorrect.

The window should have an owner when IsModal=true.

WinUI uygulamasında sahip pencere ayarlamak için Win32 interoperabilite gerekir. Daha fazla bilgi ve örnek kod için WinUI 3 Galerisi örnek uygulamasındaki sayfaya bakın AppWindow .

Sunumcu uygula

Sunum aracı bir defada yalnızca tek bir pencereye uygulanabilir. Aynı sunum aracını ikinci bir pencereye uygulamaya çalışmak istisna oluşturur. Başka bir deyişle, birden çok pencereniz varsa ve her birini belirli bir sunu moduna geçirmek istiyorsanız, aynı türden birden çok sunucu oluşturmanız ve ardından her birini kendi penceresine uygulamanız gerekir.

Yeni bir sunum yapan uygulandığında (AppWindow.Presenter özelliği değişir), bu durum uygulamanız üzerinde etkili olan AppWindow ile olayı aracılığıyla sizin tarafınıza bildirilir; AppWindow özelliği olarak ayarlanmıştır.

İpucu

Değiştirilmiş bir gösterici uygular ve göstericiler arasında değişim yapılmasına izin verirseniz, bu değiştirilen göstericiyi AppWindow'a yeniden uygulayabilmek için bir başvuru sakladığınızdan emin olun.

Bu örnek, aşağıdakilerin nasıl yapılacağını göstermektedir:

Burada, pencere oluşturucusunda bir sunumcu oluşturulur, değiştirilir ve uygulanır.

OverlappedPresenter presenter = OverlappedPresenter.Create();
presenter.PreferredMinimumWidth = 420;
presenter.PreferredMinimumHeight = 550;
AppWindow.SetPresenter(presenter);

Pencere içeriği olan Sayfada ve uygulanan sunucuya AppWindow başvuru alabilirsiniz.

AppWindow appWindow;
OverlappedPresenter modifiedPresenter;

private void AppWindowPage_Loaded(object sender, RoutedEventArgs e)
{
    appWindow = AppWindow.GetFromWindowId(XamlRoot.ContentIslandEnvironment.AppWindowId);
    modifiedPresenter = (OverlappedPresenter)appWindow.Presenter;

    appWindow.Changed += AppWindow_Changed;
}

private void AppWindow_Changed(AppWindow sender, AppWindowChangedEventArgs args)
{
    if (args.DidPresenterChange)
    {
        // ConfigText is a TextBox control defined in XAML for the page.
        ConfigText.Text = appWindow.Presenter.Kind.ToString();
    }
}

private void CompactOverlayButton_Click(object sender, RoutedEventArgs e)
{
    if (appWindow.Presenter.Kind != AppWindowPresenterKind.CompactOverlay)
    {
        appWindow.SetPresenter(CompactOverlayPresenter.Create());
        fullScreenButton.IsChecked = false;
    }
    else
    {
        appWindow.SetPresenter(modifiedPresenter);
    }
}

private void FullScreenButton_Click(object sender, RoutedEventArgs e)
{
    if (appWindow.Presenter.Kind != AppWindowPresenterKind.FullScreen)
    {
        appWindow.SetPresenter(FullScreenPresenter.Create());
        compactOverlayButton.IsChecked = false;
    }
    else
    {
        appWindow.SetPresenter(modifiedPresenter);
    }
}

UI framework ve HWND etkileşimi

sınıfı AppWindow , uygulamanızdaki herhangi bir üst düzey HWND için kullanılabilir. Başka bir deyişle, bir masaüstü UI çerçevesiyle (WinUI dahil) çalışırken, bir pencere oluşturmak ve içeriğini eklemek için bu çerçevenin giriş noktasını kullanmaya devam edebilirsiniz. Bu kullanıcı arabirimi çerçevesi ile bir pencere oluşturduktan sonra, Windows Uygulama SDK'sı'nin sağladığı pencere arası iletişim işlevlerini (aşağıya bakın) kullanarak, ilgili AppWindow ve onun yöntemlerine, özelliklerine ve olaylarına erişebilirsiniz.

Kullanmanın AppWindow avantajlarından bazıları (ui çerçevesiyle çalışırken bile) şunlardır:

  • Başlık çubuğu kolayca özelleştirilebilir ve varsayılan olarak Windows 11 kullanıcı arayüzünü (yuvarlatılmış köşeler, pencere yakalama grupları açılır penceresi) korur.
  • Sistem tarafından sağlanan tam ekran ve kompakt katman (resim içinde resim) deneyimleri.
  • Bazı temel Win32 pencereleme kavramları için Windows Çalışma Zamanı (WinRT) API yüzeyi.

1.3 öncesi Windows Uygulama SDK'sı sürümleri (veya diğer masaüstü uygulama çerçeveleri) için AppWindow edinin

Window.AppWindow özelliği Windows Uygulama SDK'sı sürüm 1.3 ve sonraki sürümlerde kullanılabilir. Önceki sürümler için bu bölümdeki işlevsel olarak eşdeğer kod örneğini kullanabilirsiniz.

C#. .NET pencere birlikte çalışabilirlik işlevleri için sarmalayıcılar Microsoft.UI.Win32Interop sınıfının yöntemleri olarak uygulanır. Ayrıca bkz. .NET uygulamasından birlikte çalışabilirlik API'lerini Çağırma.

C++. Interop işlevleri winrt/Microsoft.ui.interop.h başlık dosyasında tanımlanır.

Aşağıdaki kod örneği bölümünde gerçek kaynak kodu gösterilmektedir; ancak mevcut bir pencere verilen bir AppWindow nesneyi alma tarifi aşağıda verilmiştir:

  1. Mevcut pencere nesneniz (UI çerçeveniz için) için HWND'yi (henüz sahip değilseniz) alın.
  2. HWND'yi GetWindowIdFromWindow birlikte çalışma işlevine bir WindowId almak için geçirin.
  3. Bu WindowId değerini statik AppWindow.GetFromWindowId yöntemine geçirerek AppWindow'yi almak için kullanın.
// MainWindow.xaml.cs
private void myButton_Click(object sender, RoutedEventArgs e)
{
    // Retrieve the window handle (HWND) of the current (XAML) WinUI window.
    var hWnd =
        WinRT.Interop.WindowNative.GetWindowHandle(this);

    // Retrieve the WindowId that corresponds to hWnd.
    Microsoft.UI.WindowId windowId =
        Microsoft.UI.Win32Interop.GetWindowIdFromWindow(hWnd);

    // Lastly, retrieve the AppWindow for the current (XAML) WinUI window.
    Microsoft.UI.Windowing.AppWindow appWindow =
        Microsoft.UI.Windowing.AppWindow.GetFromWindowId(windowId);

    if (appWindow != null)
    {
        // You now have an AppWindow object, and you can call its methods to manipulate the window.
        // As an example, let's change the title text of the window.
        appWindow.Title = "Title text updated via AppWindow!";
    }
}
// pch.h
#include "microsoft.ui.xaml.window.h" // For the IWindowNative interface.
#include <winrt/Microsoft.UI.Interop.h> // For the WindowId struct and the GetWindowIdFromWindow function.
#include <winrt/Microsoft.UI.Windowing.h> // For the AppWindow class.

// mainwindow.xaml.cpp
void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&)
{
    // Retrieve the window handle (HWND) of the current (XAML) WinUI window.
    auto windowNative{ this->m_inner.as<::IWindowNative>() };
    HWND hWnd{ 0 };
    windowNative->get_WindowHandle(&hWnd);

    // Retrieve the WindowId that corresponds to hWnd.
    Microsoft::UI::WindowId windowId = 
        Microsoft::UI::GetWindowIdFromWindow(hWnd);

    // Lastly, retrieve the AppWindow for the current (XAML) WinUI window.
    Microsoft::UI::Windowing::AppWindow appWindow = 
        Microsoft::UI::Windowing::AppWindow::GetFromWindowId(windowId);

    if (appWindow)
    {
        // You now have an AppWindow object, and you can call its methods to manipulate the window.
        // As an example, let's change the title text of the window.
        appWindow.Title(L"Title text updated via AppWindow!");
    }
}

AppWindow ile çalışma hakkında daha fazla örnek için bkz. Windowing galeri örneği.

Sınırlamalar

Windows Uygulama SDK'sı şu anda bir AppWindow'ye UI framework içeriği ekleme yöntemleri sağlamıyor.