Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows 11 içindeki
Mica, son derece kişiselleştirilmiş bir görünüm oluşturmak için kullanıcının temasını ve masaüstü duvar kağıdını içeren opak bir malzemedir. Mica, görselleştirmesini oluşturmak için arka plan duvar kağıdını yalnızca bir kez yakaladığından performans için tasarlanmıştır, bu nedenle özellikle başlık çubuğu alanında uygulamanızın temel katmanı için bunu öneririz.
Akrilik, buzlu camın etkisini çoğaltan yarı saydam bir malzemedir. Yalnızca açılır menüler ve bağlam menüleri gibi geçici, hızlı kapatılabilen yüzeyler için kullanılır.
Bu makalede, Windows App SDK/WinUI 3 XAML uygulamanızın temel katmanı olarak Mica veya Akrilik'in nasıl uygulanacağı açıklanmaktadır.
Uyarı
- Win32 uygulamasında arka plan malzemeleri kullanmak için, Windows 11 için Win32 masaüstü uygulamalarına Mica uygulama bölümüne bakın.
- Kullanıcı arabirimi öğelerine uygulanan uygulama içi akrilik için (pencere arka planına değil), bkz. Uygulama içi akrilik.
Arka plan malzemesi nasıl kullanılır?
![]()
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.
Uygulamanıza Mica veya Akrilik malzeme uygulamak için, SystemBackdrop özelliğini bir XAML SystemBackdrop (genellikle yerleşik arka planlardan biri, MicaBackdrop veya DesktopAcrylicBackdrop) olarak ayarlarsınız.
Bu öğelerin SystemBackdrop özelliği vardır:
- CommandBarFlyoutCommandBar.SystemBackdrop
- İçerikAdası.SistemArkaplanı
- DesktopWindowXamlSource.SystemBackdrop
- FlyoutBase.SystemBackdrop
- MenuFlyoutPresenter.SystemBackdrop
- Popup.SystemBackdrop
- Window.SystemBackdrop
Bu örneklerde XAML'de sistem arka planı nasıl ayarlanacağı gösterilmektedir.
Mica
Mica genellikle bir uygulama Penceresi için arka plan olarak kullanılır.
<Window
... >
<Window.SystemBackdrop>
<MicaBackdrop/>
</Window.SystemBackdrop>
</Window>
Mica Alt
Mica Alt değişkenini kullanmak için özelliğini olarak KindayarlayınBaseAlt.
<Window
... >
<Window.SystemBackdrop>
<MicaBackdrop Kind="BaseAlt"/>
</Window.SystemBackdrop>
</Window>
Acrylic
Masaüstü Akrilik bir Pencere için arka plan olarak kullanılabilir.
<Window
... >
<Window.SystemBackdrop>
<DesktopAcrylicBackdrop/>
</Window.SystemBackdrop>
</Window>
Geçici kullanıcı arabiriminde akrilik
Akrilik, geçici kullanıcı arabirimi için açılır menü gibi arka plan olarak da yaygın olarak kullanılır. Flyout'lar genellikle dinamik olarak oluşturulduğundan, bunu XAML'de veya kodda ayarlayabilirsiniz.
<Flyout
... >
<Flyout.SystemBackdrop>
<DesktopAcrylicBackdrop/>
</Flyout.SystemBackdrop>
</Flyout>
Flyout flyout = new Flyout()
{
SystemBackdrop = new DesktopAcrylicBackdrop()
};
Gelişmiş: Sistem arka plan denetleyicisini kullanma
Uyarı
Windows App SDK 1.3'den başlayarak, önceki bölümde açıklandığı gibi Window.SystemBackdrop özelliğini bir XAML SystemBackdrop olarak ayarlayarak malzeme uygulayabilirsiniz. Çoğu uygulama için malzeme uygulamanın önerilen yolu budur.
Bu makalenin geri kalanında, arka plan davranışı üzerinde daha fazla denetim sağlayan Composition MicaController ve DesktopAcrylicController API'lerinin nasıl kullanılacağı gösterilmektedir.
Uygulamanızda arka plan malzemesi kullanmak için, ISystemBackdropController arabirimini (MicaController veya DesktopAcrylicController) uygulayan denetleyicilerden birini kullanabilirsiniz. Bu sınıflar hem sistem arka planı malzemesinin işlenmesini hem de malzeme için sistem ilkesinin işlenmesini yönetir.
Arka plan malzemeniz olarak Mica'yı kullanmak için bir MicaController nesnesi oluşturun. Akrilik kullanmak için bir DesktopAcrylicController nesnesi oluşturun. Kurulum ve destekleyici kod, her tür sistem arka planı malzemesi için aynıdır.
MicaController oluşturma
MicaController micaController;
bool TrySetMicaBackdrop(bool useMicaAlt)
{
if (MicaController.IsSupported())
{
...
micaController = new MicaController();
micaController.Kind = useMicaAlt ? MicaKind.BaseAlt : MicaKind.Base;
...
}
}
DesktopAcrylicController oluşturun
DesktopAcrylicController acrylicController;
bool TrySetAcrylicBackdrop(bool useAcrylicThin)
{
if (DesktopAcrylicController.IsSupported())
{
...
acrylicController = new DesktopAcrylicController();
acrylicController.Kind = useAcrylicThin
? DesktopAcrylicKind.Thin : DesktopAcrylicKind.Base;
...
}
}
Denetleyici, sisteme varsayılan olarak Açık ve Koyu temalara tepki gösterir. Bu davranışı geçersiz kılmak için denetleyicide aşağıdaki özellikleri ayarlayabilirsiniz:
Uyarı
Denetleyicinin dört özelliğinden herhangi birini özelleştirdikten sonra, ilişkili SystemBackdropConfiguration.Theme değiştiğinde artık varsayılan Açık veya Koyu değerleri uygulamaz. Bu özellikleri yeni temayla eşleşecek şekilde el ile güncelleştirmeniz gerekir.
Uygulamanızda arka plan malzemesini kullanmak için aşağıdaki öğeler gereklidir:
Sistem desteği
Uygulamanın çalıştırıldığı sistem arka plan malzemesini desteklemelidir. Arka plan malzemesinin çalışma zamanında desteklendiğinden emin olmak için MicaController.IsSupported veya DesktopAcrylicController.IsSupported yöntemini çağırın.
Geçerli bir hedef
ICompositionSupportsSystemBackdrop arabirimini uygulayan bir hedef sağlamanız gerekir. XAML uygulamasında XAML Window bu arabirimi uygular ve arka plan hedefi olarak kullanılır.
SystemBackdropConfiguration nesnesi
SystemBackdropConfiguration, sistem arka plan malzemesini düzgün yapılandırmak için sisteme özgü ilke bilgilerini sistem arka planı denetleyicisine sağlar.
DispatcherQueue nesnesi
Ana XAML iş parçacığında kullanılabilir bir Windows.System.DispatcherQueue olması gerekir. Birinin mevcut olduğundan emin olmak için arayın
DispatcherQueue.EnsureSystemDispatcherQueue().
Örnek: WinUI uygulamasında denetleyici ile Mica kullanma
Bu örnekte, bir XAML uygulamasında denetleyici kullanarak Mica arka plan malzemesinin nasıl ayarlanacağı gösterilmektedir.
Tavsiye
Ayrıca, GitHub şu örnek projelere bakın:
C#: WinUI Galerisi'nde SampleSystemBackdropsWindow.
C++/WinRT: Windows App SDK Mica örneği.
using Microsoft.UI.Composition;
using Microsoft.UI.Composition.SystemBackdrops;
using Microsoft.UI.Xaml;
using WinRT; // required to support Window.As<ICompositionSupportsSystemBackdrop>()
public sealed partial class MainWindow : Window
{
MicaController micaController;
SystemBackdropConfiguration configurationSource;
public MainWindow()
{
this.InitializeComponent();
TrySetMicaBackdrop(false);
}
bool TrySetMicaBackdrop(bool useMicaAlt)
{
if (MicaController.IsSupported())
{
DispatcherQueue.EnsureSystemDispatcherQueue();
// Hooking up the policy object.
configurationSource = new SystemBackdropConfiguration();
Activated += Window_Activated;
Closed += Window_Closed;
((FrameworkElement)Content).ActualThemeChanged += Window_ThemeChanged;
// Initial configuration state.
configurationSource.IsInputActive = true;
SetConfigurationSourceTheme();
micaController = new MicaController
{
Kind = useMicaAlt ? MicaKind.BaseAlt : MicaKind.Base
};
// Enable the system backdrop.
// Note: Be sure to have "using WinRT;" to support the Window.As<...>() call.
micaController.AddSystemBackdropTarget(
this.As<ICompositionSupportsSystemBackdrop>());
micaController.SetSystemBackdropConfiguration(configurationSource);
return true; // Succeeded.
}
return false; // Mica is not supported on this system.
}
private void Window_Activated(object sender, WindowActivatedEventArgs args)
{
if (configurationSource != null)
configurationSource.IsInputActive =
args.WindowActivationState != WindowActivationState.Deactivated;
}
private void Window_Closed(object sender, WindowEventArgs args)
{
// Make sure any Mica/Acrylic controller is disposed
// so it doesn't try to use this closed window.
micaController?.Dispose();
micaController = null;
Activated -= Window_Activated;
configurationSource = null;
}
private void Window_ThemeChanged(FrameworkElement sender, object args)
{
if (configurationSource != null)
SetConfigurationSourceTheme();
}
private void SetConfigurationSourceTheme()
{
if (configurationSource != null)
configurationSource.Theme =
(SystemBackdropTheme)((FrameworkElement)Content).ActualTheme;
}
}
İlgili makaleler
Windows developer