Windows.UI.Xaml.Core.Direct Espacio de nombres
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
- Uso del marcado XAML:
<Grid x:Name="RootGrid">
<Border BorderBrush="Black" BorderThickness="5">
<Rectangle Height="100" Width="100" Fill="Red" />
</Border>
</Grid>
- 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);
- 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:
- Cree una instancia de un objeto Xaml interno para un tipo Xaml normal, como Button, mediante XamlDirect.CreateInstance.
- Establezca valores de propiedad mediante una de las variantes adecuadas del método XamlDirect.Set-Property en función del tipo de la propiedad. Por ejemplo, use XamlDirect.SetColorProperty en la propiedad SolidColorBrush.Color . De forma similar, use métodos Get-Property para acceder a propiedades específicas.
- Agregue un elemento a una colección, como Panel.Children, mediante XamlDirect.AddToCollection y quite elementos de colecciones mediante XamlDirect.RemoveFromCollection. XamlDirect admite diversas operaciones de recopilación como GetCollectionCount, ClearCollection, InsertIntoCollectionAt, RemoveFromCollectionAt y GetXamlDirectObjectFromCollectionAt.
- Agregue un controlador de eventos, como Button.Click con XamlDirect.AddEventHandler y quite de forma similar controladores de eventos mediante XamlDirect.RemoveEventHandler.
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.