Bagikan melalui


Windows.UI.Xaml.Core.Direct Ruang nama

Menyediakan API XamlDirect yang memungkinkan middleware mengakses sebagian besar Xaml pada tingkat yang lebih primitif, mencapai CPU yang lebih baik dan performa set kerja.

Kelas

XamlDirect

Mewakili kelas dasar untuk semua API XamlDirect. Semua API XamlDirect adalah metode instans dari kelas ini.

XamlDirect adalah API untuk mengakses Xaml pada tingkat yang lebih primitif untuk CPU yang lebih baik dan performa set kerja.

API WinUI 2 yang setara untuk UWP: Microsoft.UI.Xaml.Core.Direct.XamlDirect (untuk WinUI di SDK Aplikasi Windows, lihat namespace SDK Aplikasi Windows).

Antarmuka

IXamlDirectObject

Mewakili jenis objek utama yang berpartisipasi dalam kumpulan API XamlDirect .

Enum

XamlEventIndex

Enum yang mencantumkan semua peristiwa yang didukung di XamlDirect.

API WinUI 2 yang setara untuk UWP: Microsoft.UI.Xaml.Core.Direct.XamlEventIndex (untuk WinUI di SDK Aplikasi Windows, lihat namespace SDK Aplikasi Windows).

XamlPropertyIndex

Enum yang mencantumkan semua properti yang didukung di XamlDirect.

API WinUI 2 yang setara untuk UWP: Microsoft.UI.Xaml.Core.Direct.XamlPropertyIndex (untuk WinUI di SDK Aplikasi Windows, lihat namespace SDK Aplikasi Windows).

XamlTypeIndex

Enum yang mencantumkan semua jenis yang didukung di XamlDirect.

API WinUI 2 yang setara untuk UWP: Microsoft.UI.Xaml.Core.Direct.XamlTypeIndex (untuk WinUI di SDK Aplikasi Windows, lihat namespace SDK Aplikasi Windows).

Contoh

Contoh ini menunjukkan cara membuat objek, mengatur properti, dan antarmuka dengan UIElements standar dengan 3 cara: menggunakan markup XAML, menggunakan jenis XAML reguler di C# dan cara baru menggunakan API XamlDirect .

Dalam contoh ini, kami membuat elemen Border dan elemen Rectangle dan mengatur beberapa properti pada masing-masing. Kemudian kita menambahkannya ke pohon elemen UI.

  1. Menggunakan markup XAML:
<Grid x:Name="RootGrid">
    <Border BorderBrush="Black" BorderThickness="5">
        <Rectangle Height="100" Width="100" Fill="Red" />
    </Border>
</Grid>
  1. Menggunakan kode imperatif reguler, dengan jenis XAML lengkap:
Border border = new Border();
border.BorderBrush = new SolidColorBrush(Colors.Black);
border.BorderThickness = new Thickness(5);

Rectangle rectangle = new Rectangle();
rectangle.Height = 100;
rectangle.Width = 100;
SolidColorBrush rectBrush = new SolidColorBrush(Colors.Red);
rectangle.Fill = rectBrush;

border.Child = rectangle;

RootGrid.Children.Add(border);
  1. Menggunakan kode XamlDirect :

Kode berikut akan memiliki performa yang lebih tinggi daripada menggunakan jenis XAML penuh karena semua operasi seperti instansiasi dan pengaturan properti pada berbagai elemen dicapai melalui IXamlDirectObjects alih-alih jenis XAML lengkap.

XamlDirect xamlDirect = XamlDirect.GetDefault();

IXamlDirectObject border = XamlDirect.CreateInstance(XamlTypeIndex.Border);
xamlDirect.SetThicknessProperty(border, XamlPropertyIndex.Border_BorderThickness, new Thickness(5));

IXamlDirectObject borderBrush = XamlDirect.CreateInstance(XamlTypeIndex.SolidColorBrush);
xamlDirect.SetColorProperty(borderBrush, XamlPropertyIndex.SolidColorBrush_Color, Colors.Black);
xamlDirect.SetXamlDirectObjectProperty(border, XamlPropertyIndex.Border_BorderBrush, borderBrush);

IXamlDirectObject rectangle = XamlDirect.CreateInstance(XamlTypeIndex.Rectangle);
xamlDirect.SetDoubleProperty(rectangle, XamlPropertyIndex.FrameworkElement_Width, 100);
xamlDirect.SetDoubleProperty(rectangle, XamlPropertyIndex.FrameworkElement_Height, 100);

IXamlDirectObject rectBrush = XamlDirect.CreateInstance(XamlTypeIndex.SolidColorBrush);
xamlDirect.SetColorProperty(rectBrush, XamlPropertyIndex.SolidColorBrush_Color, Colors.Red);
xamlDirect.SetXamlDirectObjectProperty(rectangle, XamlPropertyIndex.Shape_Fill, rectangleBrush);

xamlDirect.SetXamlDirectObjectProperty(border, XamlPropertyIndex.Border_Child, rectangle);

RootGrid.Children.Add((UIElement) XamlDirect.GetObject(border));

Keterangan

XamlDirectdirancang untuk middleware yang sebagian besar menggunakan API imperatif untuk membuat UI alih-alih markup. Dengan API XamlDirect , Anda dapat mencapai paritas performa dengan parser XAML bahkan saat membuat UI secara imperatif dalam kode.

XamlDirect API dapat digunakan berdampingan dengan API tradisional dan memanfaatkan peningkatan performa bayar untuk bermain.

Tidak semua API Xaml tersedia dengan XamlDirect. Enum XamlTypeIndex mencantumkan semua jenis yang didukung, enum XamlPropertyIndex mencantumkan semua properti yang didukung, dan enum XamlEventIndex mencantumkan semua peristiwa yang didukung.

Fungsi yang didukung

Anda dapat melakukan fungsi berikut menggunakan API XamlDirect:

Semua objek yang dikembalikan oleh XamlDirect.CreateInstance berjenis IXamlDirectObject. Semua API lainnya, seperti SET*Property API, mengambil IXamlDirectObject sebagai parameter pertamanya.

Untuk mengonversi IXamlDirectObject ke APINDEX lengkapnya, misalnya Tombol, gunakan metode XamlDirect.GetObject . Demikian pula, Anda dapat menggunakan XamlDirect.GetXamlDirectObject untuk mengonversi dari Object/DependencyObject lengkap ke instans setara XamlDirect-nya.

Lihat juga