Windows.UI.Xaml.Core.Direct Namespace
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.
- Verwenden von XAML-Markup:
<Grid x:Name="RootGrid">
<Border BorderBrush="Black" BorderThickness="5">
<Rectangle Height="100" Width="100" Fill="Red" />
</Border>
</Grid>
- 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);
- 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:
- Erstellen Sie mit XamlDirect.CreateInstance eine instance eines internen Xaml-Objekts für einen regulären Xaml-Typ, z. B. Button.
- Legen Sie Eigenschaftswerte mithilfe einer der entsprechenden Varianten der XamlDirect.Set-Property-Methode basierend auf dem Typ der Eigenschaft fest. Verwenden Sie beispielsweise XamlDirect.SetColorProperty für die SolidColorBrush.Color-Eigenschaft . Verwenden Sie auf ähnliche Weise Get-Property Methoden, um auf bestimmte Eigenschaften zuzugreifen.
- Fügen Sie einer Auflistung ein Element wie Panel.Children mithilfe von XamlDirect.AddToCollection hinzu, und entfernen Sie Elemente aus Sammlungen mithilfe von XamlDirect.RemoveFromCollection. XamlDirect unterstützt eine Vielzahl solcher Sammlungsvorgänge, einschließlich GetCollectionCount, ClearCollection, InsertIntoCollectionAt, RemoveFromCollectionAt und GetXamlDirectObjectFromCollectionAt.
- Fügen Sie einen Ereignishandler wie Button.Click mithilfe von XamlDirect.AddEventHandler hinzu, und entfernen Sie ereignishandler auf ähnliche Weise mithilfe von XamlDirect.RemoveEventHandler.
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.