Windows.UI.Xaml.Core.Direct Namespace

Stellt XamlDirect-APIs bereit, mit denen Middleware auf einen Großteil von Xaml auf einer primitiveren Ebene zugreifen kann, um eine bessere CPU- und Arbeitssatzleistung zu erzielen.

Klassen

XamlDirect

Stellt die Basisklasse für alle XamlDirect-APIs dar. Alle XamlDirect-APIs sind instance Methoden aus dieser Klasse.

XamlDirect ist eine API für den Zugriff auf Xaml auf einer primitiveren Ebene, um eine bessere CPU- und Arbeitssatzleistung zu erzielen.

Entsprechende WinUI 2-API für UWP: Microsoft.UI.Xaml.Core.Direct.XamlDirect (Informationen zu WinUI im Windows App SDK finden Sie unter Windows App SDK Namespaces).

Schnittstellen

IXamlDirectObject

Stellt den primären Objekttyp dar, der an der XamlDirect-Gruppe von APIs beteiligt ist.

Enumerationen

XamlEventIndex

Enumeration, die alle unterstützten Ereignisse in XamlDirect auflistet.

Entsprechende WinUI 2-API für UWP: Microsoft.UI.Xaml.Core.Direct.XamlEventIndex (informationen zu WinUI im Windows App SDK finden Sie im Windows App SDK Namespaces).

XamlPropertyIndex

Enumeration, die alle unterstützten Eigenschaften in XamlDirect auflistet.

Entsprechende WinUI 2-API für UWP: Microsoft.UI.Xaml.Core.Direct.XamlPropertyIndex (informationen zu WinUI im Windows App SDK finden Sie im Windows App SDK Namespaces).

XamlTypeIndex

Enumeration, die alle unterstützten Typen in XamlDirect auflistet.

Entsprechende WinUI 2-API für UWP: Microsoft.UI.Xaml.Core.Direct.XamlTypeIndex (informationen zu WinUI im Windows App SDK finden Sie im Windows App SDK Namespaces).

Beispiele

In diesem Beispiel wird veranschaulicht, wie Sie Objekte erstellen, Eigenschaften festlegen und eine Schnittstelle mit standardmäßigen UIElements auf drei Arten verwenden: mit XAML-Markup, regulären XAML-Typen in C# und der neuen Methode mit XamlDirect-APIs .

In diesem Beispiel erstellen wir ein Border-Element und ein Rectangle-Element und legen jeweils einige Eigenschaften fest. Anschließend fügen wir sie der Struktur von UI-Elementen hinzu.

  1. Verwenden von XAML-Markup:
<Grid x:Name="RootGrid">
    <Border BorderBrush="Black" BorderThickness="5">
        <Rectangle Height="100" Width="100" Fill="Red" />
    </Border>
</Grid>
  1. Verwenden von regulärem imperativem Code mit vollständigen XAML-Typen:
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. Verwenden von XamlDirect-Code :

Der folgende Code bietet eine höhere Leistung als die Verwendung vollständiger XAML-Typen, da alle Vorgänge wie Instanziierung und Festlegen von Eigenschaften für verschiedene Elemente über IXamlDirectObjects anstelle der vollständigen XAML-Typen ausgeführt werden.

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));

Hinweise

XamlDirect wurde speziell für Middleware entwickelt , die überwiegend imperative APIs verwenden, um eine Benutzeroberfläche anstelle von Markup zu erstellen. Mit XamlDirect-APIs können Sie leistungsparität mit dem XAML-Parser erreichen, auch wenn Sie die Benutzeroberfläche imperativ im Code erstellen.

XamlDirect APIs können parallel zu herkömmlichen APIs verwendet werden und profitieren von der Bezahlung für Verbesserungen der Wiedergabeleistung.

Nicht alle XAML-APIs sind mit XamlDirect verfügbar. Die XamlTypeIndex-Enumeration listet alle unterstützten Typen auf, die XamlPropertyIndex-Enumeration listet alle unterstützten Eigenschaften auf, und die XamlEventIndex-Enumeration listet alle unterstützten Ereignisse auf.

Unterstützte Funktionen

Sie können die folgenden Funktionen mithilfe von XamlDirect-APIs ausführen:

Alle von XamlDirect.CreateInstance zurückgegebenen Objekte sind vom Typ IXamlDirectObject. Alle anderen APIs, z. B. die Set*Property-APIs, verwenden ein IXamlDirectObject als ersten Parameter.

Verwenden Sie die XamlDirect.GetObject-Methode, um ein IXamlDirectObject-Objekt in den vollständigen APINDEX zu konvertieren, z. B. eine Button-Methode. Ebenso können Sie XamlDirect.GetXamlDirectObject verwenden, um von einem vollständigen Object/DependencyObject-Objekt in das entsprechende XamlDirect-instance zu konvertieren.

Weitere Informationen