Windows.UI.Xaml.Core.Direct Spazio dei nomi

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.

  1. Uso del markup XAML:
<Grid x:Name="RootGrid">
    <Border BorderBrush="Black" BorderThickness="5">
        <Rectangle Height="100" Width="100" Fill="Red" />
    </Border>
</Grid>
  1. 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);
  1. 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:

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.

Vedi anche