Windows.UI.Xaml.Core.Direct Spazio dei nomi
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce API XamlDirect che consentono al middleware di accedere alla maggior parte di Xaml a un livello più primitivo, ottenendo prestazioni migliori della CPU e del working set.
Classi
XamlDirect |
Rappresenta la classe di base per tutte le API XamlDirect. Tutte le API XamlDirect sono metodi di istanza al di fuori di questa classe. XamlDirect è un'API per l'accesso a Xaml a un livello più primitivo per migliorare le prestazioni della CPU e del working set. API WinUI 2 equivalente per UWP: Microsoft.UI.Xaml.Core.Direct.XamlDirect (per WinUI nel SDK per app di Windows, vedi gli spazi dei nomi SDK per app di Windows). |
Interfacce
IXamlDirectObject |
Rappresenta il tipo di oggetto primario che partecipa al set di API XamlDirect . |
Enumerazioni
XamlEventIndex |
Enumerazione che elenca tutti gli eventi supportati in XamlDirect. API WinUI 2 equivalente per UWP: Microsoft.UI.Xaml.Core.Direct.XamlEventIndex (per WinUI nel SDK per app di Windows, vedi gli spazi dei nomi SDK per app di Windows). |
XamlPropertyIndex |
Enumerazione che elenca tutte le proprietà supportate in XamlDirect. API WinUI 2 equivalente per UWP: Microsoft.UI.Xaml.Core.Direct.XamlPropertyIndex (per WinUI nel SDK per app di Windows, vedi gli spazi dei nomi SDK per app di Windows). |
XamlTypeIndex |
Enumerazione che elenca tutti i tipi supportati in XamlDirect. API WinUI 2 equivalente per UWP: Microsoft.UI.Xaml.Core.Direct.XamlTypeIndex (per WinUI nel SDK per app di Windows, vedi gli spazi dei nomi SDK per app di Windows). |
Esempio
Questo esempio illustra come creare oggetti, impostare proprietà e interfaccia con UIElement standard in 3 modi: usando il markup XAML, usando i tipi XAML normali in C# e il nuovo modo di usare le API XamlDirect .
In questo esempio viene creato un elemento Border e un elemento Rectangle e vengono impostate alcune proprietà per ognuna. Li aggiungiamo quindi all'albero degli elementi dell'interfaccia utente.
- Uso del markup XAML:
<Grid x:Name="RootGrid">
<Border BorderBrush="Black" BorderThickness="5">
<Rectangle Height="100" Width="100" Fill="Red" />
</Border>
</Grid>
- Uso di codice imperativo normale, con tipi XAML completi:
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);
- Uso del codice XamlDirect :
Il codice seguente avrà prestazioni superiori rispetto all'uso di tipi XAML completi, perché tutte le operazioni come la creazione di istanze e l'impostazione delle proprietà su vari elementi vengono eseguite tramite IXamlDirectObjects anziché i tipi XAML completi.
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));
Commenti
XamlDirect è progettato per il middleware che usa prevalentemente API imperative per creare l'interfaccia utente anziché il markup. Con le API XamlDirect è possibile ottenere la parità delle prestazioni con il parser XAML anche quando si crea l'interfaccia utente in modo imperativo nel codice.
XamlDirect Le API possono essere usate side-by-side con le API tradizionali e sfruttare i vantaggi dei miglioramenti delle prestazioni di gioco.
Non tutte le API Xaml sono disponibili con XamlDirect. L'enumerazione XamlTypeIndex elenca tutti i tipi supportati, l'enumerazione XamlPropertyIndex elenca tutte le proprietà supportate e l'enumerazione XamlEventIndex elenca tutti gli eventi supportati.
Funzioni supportate
Puoi eseguire le funzioni seguenti usando le API XamlDirect:
- Creare un'istanza di un oggetto Xaml interno per un normale tipo Xaml, ad esempio Button, usando XamlDirect.CreateInstance.
- Impostare i valori delle proprietà usando una delle varianti appropriate del metodo XamlDirect.Set-Property in base al tipo della proprietà. Ad esempio, usa XamlDirect.SetColorProperty per la proprietà SolidColorBrush.Color . Analogamente, usare metodi Get-Property per accedere a proprietà specifiche.
- Aggiungere un elemento a una raccolta, ad esempio Panel.Children, usando XamlDirect.AddToCollection e rimuovere elementi dalle raccolte usando XamlDirect.RemoveFromCollection. XamlDirect supporta un'ampia gamma di operazioni di raccolta, tra cui GetCollectionCount, ClearCollection, InsertIntoCollectionAt, RemoveFromCollectionAt e GetXamlDirectObjectFromCollectionAt.
- Aggiungere un gestore eventi, ad esempio Button.Click usando XamlDirect.AddEventHandler e rimuovere in modo analogo i gestori eventi usando XamlDirect.RemoveEventHandler.
Tutti gli oggetti restituiti da XamlDirect.CreateInstance sono di tipo IXamlDirectObject. Tutte le altre API, ad esempio le API Set*Property, accettano IXamlDirectObject come primo parametro.
Per convertire un oggetto IXamlDirectObject nell'oggetto APINDEX completo, ad esempio button, usa il metodo XamlDirect.GetObject . Analogamente, puoi usare XamlDirect.GetXamlDirectObject per eseguire la conversione da un oggetto/DependencyObject completo alla relativa istanza equivalente di XamlDirect.