Partager via


Windows.UI.Xaml.Core.Direct Espace de noms

Fournit des API XamlDirect qui permettent aux intergiciels d’accéder à la plupart du xaml à un niveau plus primitif, ce qui permet d’obtenir de meilleures performances de processeur et de jeu de travail.

Classes

XamlDirect

Représente la classe de base pour toutes les API XamlDirect. Toutes les API XamlDirect sont instance méthodes de cette classe.

XamlDirect est une API permettant d’accéder à Xaml à un niveau plus primitif pour de meilleures performances de l’UC et des ensembles de travail.

API WinUI 2 équivalente pour UWP : Microsoft.UI.Xaml.Core.Direct.XamlDirect (pour WinUI dans le SDK d'application Windows, consultez les espaces de noms SDK d'application Windows).

Interfaces

IXamlDirectObject

Représente le type d’objet principal qui participe au jeu d’API XamlDirect .

Énumérations

XamlEventIndex

Énumération qui répertorie tous les événements pris en charge dans XamlDirect.

API WinUI 2 équivalente pour UWP : Microsoft.UI.Xaml.Core.Direct.XamlEventIndex (pour WinUI dans le SDK d'application Windows, consultez les espaces de noms SDK d'application Windows).

XamlPropertyIndex

Énumération qui répertorie toutes les propriétés prises en charge dans XamlDirect.

API WinUI 2 équivalente pour UWP : Microsoft.UI.Xaml.Core.Direct.XamlPropertyIndex (pour WinUI dans le SDK d'application Windows, consultez les espaces de noms SDK d'application Windows).

XamlTypeIndex

Énumération qui répertorie tous les types pris en charge dans XamlDirect.

API WinUI 2 équivalente pour UWP : Microsoft.UI.Xaml.Core.Direct.XamlTypeIndex (pour WinUI dans le SDK d'application Windows, consultez les espaces de noms SDK d'application Windows).

Exemples

Cet exemple montre comment créer des objets, définir des propriétés et interfacer avec des uiElements standard de 3 façons : à l’aide du balisage XAML, à l’aide de types XAML standard en C# et de la nouvelle façon d’utiliser les API XamlDirect .

Dans cet exemple, nous créons un élément Border et un élément Rectangle et nous définissons quelques propriétés sur chacun d’eux. Ensuite, nous les ajoutons à l’arborescence des éléments d’interface utilisateur.

  1. Utilisation du balisage XAML :
<Grid x:Name="RootGrid">
    <Border BorderBrush="Black" BorderThickness="5">
        <Rectangle Height="100" Width="100" Fill="Red" />
    </Border>
</Grid>
  1. Utilisation de code impératif standard, avec des types XAML complets :
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. Utilisation du code XamlDirect :

Le code suivant aura des performances supérieures à l’utilisation de types XAML complets, car toutes les opérations telles que l’instanciation et la définition de propriétés sur différents éléments sont effectuées via IXamlDirectObjects au lieu des types XAML complets.

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

Remarques

XamlDirect est spécialement conçu pour les intergiciels qui utilisent principalement des API impératives pour créer l’interface utilisateur au lieu du balisage. Avec les API XamlDirect , vous pouvez obtenir une parité de performances avec l’analyseur XAML, même lors de la création impérative de l’interface utilisateur dans le code.

XamlDirect Les API peuvent être utilisées côte à côte avec les API traditionnelles et tirer parti des améliorations des performances de jeu payantes.

Toutes les API Xaml ne sont pas disponibles avec XamlDirect. L’énumération XamlTypeIndex répertorie tous les types pris en charge, l’énumération XamlPropertyIndex répertorie toutes les propriétés prises en charge et l’énumération XamlEventIndex répertorie tous les événements pris en charge.

Fonctions prises en charge

Vous pouvez effectuer les fonctions suivantes à l’aide des API XamlDirect :

Tous les objets retournés par XamlDirect.CreateInstance sont de type IXamlDirectObject. Toutes les autres API, telles que les API Set*Property, prennent un IXamlDirectObject comme premier paramètre.

Pour convertir un IXamlDirectObject en APINDEX complet, par exemple un Button, utilisez la méthode XamlDirect.GetObject . De même, vous pouvez utiliser XamlDirect.GetXamlDirectObject pour convertir un Objet/DependencyObject complet en son instance XamlDirect équivalent.

Voir aussi