Windows.UI.Xaml.Core.Direct Ruang nama
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
- Menggunakan markup XAML:
<Grid x:Name="RootGrid">
<Border BorderBrush="Black" BorderThickness="5">
<Rectangle Height="100" Width="100" Fill="Red" />
</Border>
</Grid>
- 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);
- 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:
- Buat instans objek Xaml internal untuk jenis Xaml biasa, seperti Tombol, menggunakan XamlDirect.CreateInstance.
- Atur nilai properti menggunakan salah satu varian metode XamlDirect.Set-Property yang sesuai berdasarkan jenis properti . Misalnya, gunakan XamlDirect.SetColorProperty ke properti SolidColorBrush.Color . Demikian pula gunakan metode Get-Property untuk mengakses properti tertentu.
- Tambahkan item ke koleksi, seperti Panel.Children, menggunakan XamlDirect.AddToCollection dan hapus item dari koleksi menggunakan XamlDirect.RemoveFromCollection. XamlDirect mendukung berbagai operasi pengumpulan tersebut termasuk GetCollectionCount, ClearCollection, InsertIntoCollectionAt, RemoveFromCollectionAt dan GetXamlDirectObjectFromCollectionAt.
- Tambahkan penanganan aktivitas, seperti Button.Click menggunakan XamlDirect.AddEventHandler dan hapus penanganan aktivitas menggunakan XamlDirect.RemoveEventHandler.
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.