Windows.UI.Xaml.Core.Direct Espacio de nombres

Proporciona LAS API de XamlDirect que permiten que el middleware acceda a la mayoría de Xaml en un nivel más primitivo, lo que mejora el rendimiento de la CPU y del conjunto de trabajo.

Clases

XamlDirect

Representa la clase base para todas las API de XamlDirect. Todas las API de XamlDirect son métodos de instancia de esta clase.

XamlDirect es una API para acceder a Xaml en un nivel más primitivo para mejorar el rendimiento de la CPU y del conjunto de trabajo.

API de WinUI 2 equivalente para UWP: Microsoft.UI.Xaml.Core.Direct.XamlDirect (para WinUI en el SDK de Aplicaciones para Windows, consulta los espacios de nombres SDK de Aplicaciones para Windows).

Interfaces

IXamlDirectObject

Representa el tipo de objeto principal que participa en el conjunto xamlDirect de LAS API.

Enumeraciones

XamlEventIndex

Enumeración que enumera todos los eventos admitidos en XamlDirect.

API de WinUI 2 equivalente para UWP: Microsoft.UI.Xaml.Core.Direct.XamlEventIndex (para WinUI en el SDK de Aplicaciones para Windows, consulta los espacios de nombres SDK de Aplicaciones para Windows).

XamlPropertyIndex

Enumeración que enumera todas las propiedades admitidas en XamlDirect.

API de WinUI 2 equivalente para UWP: Microsoft.UI.Xaml.Core.Direct.XamlPropertyIndex (para WinUI en el SDK de Aplicaciones para Windows, consulta los espacios de nombres SDK de Aplicaciones para Windows).

XamlTypeIndex

Enumeración que enumera todos los tipos admitidos en XamlDirect.

API de WinUI 2 equivalente para UWP: Microsoft.UI.Xaml.Core.Direct.XamlTypeIndex (para WinUI en el SDK de Aplicaciones para Windows, consulta los espacios de nombres SDK de Aplicaciones para Windows).

Ejemplos

En este ejemplo se muestra cómo crear objetos, establecer propiedades e interfaz con UIElements estándar de tres maneras: usar el marcado XAML, usar tipos XAML normales en C# y la nueva forma de usar las API de XamlDirect .

En este ejemplo, se crea un elemento Border y un elemento Rectangle y se establecen algunas propiedades en cada uno. A continuación, los agregamos al árbol de elementos de la interfaz de usuario.

  1. Uso del marcado XAML:
<Grid x:Name="RootGrid">
    <Border BorderBrush="Black" BorderThickness="5">
        <Rectangle Height="100" Width="100" Fill="Red" />
    </Border>
</Grid>
  1. Con código imperativo normal, con tipos XAML completos:
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 código XamlDirect :

El código siguiente tendrá un rendimiento mayor que el uso de tipos XAML completos, ya que todas las operaciones como la creación de instancias y la configuración de propiedades en varios elementos se realizan a través de IXamlDirectObjects en lugar de los tipos XAML completos.

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

Comentarios

XamlDirect está diseñado para middleware que principalmente usan API imperativas para crear la interfaz de usuario en lugar de marcado. Con las API de XamlDirect , puedes lograr paridad de rendimiento con el analizador XAML incluso al crear la interfaz de usuario de forma imperativa en el código.

XamlDirect Las API se pueden usar en paralelo con las API tradicionales y aprovechar las mejoras de rendimiento de pago por juego.

No todas las API xaml están disponibles con XamlDirect. La enumeración XamlTypeIndex enumera todos los tipos admitidos, la enumeración XamlPropertyIndex enumera todas las propiedades admitidas y la enumeración XamlEventIndex enumera todos los eventos admitidos.

Funciones admitidas

Puede realizar las siguientes funciones mediante las API xamlDirect:

Todos los objetos devueltos por XamlDirect.CreateInstance son de tipo IXamlDirectObject. Todas las demás API, como las API Set*Property, toman un IXamlDirectObject como primer parámetro.

Para convertir un IXamlDirectObject en su APINDEX completo, por ejemplo, un Button, use el método XamlDirect.GetObject . Del mismo modo, puedes usar XamlDirect.GetXamlDirectObject para convertir de un object/DependencyObject completo a su instancia equivalente de XamlDirect.

Consulte también