Windows.UI.Xaml.Core.Direct Namespace

Fornece APIs XamlDirect que permitem que o middleware acesse a maior parte do Xaml em um nível mais primitivo, alcançando melhor desempenho de CPU e conjunto de trabalho.

Classes

XamlDirect

Representa a classe base para todas as APIs XamlDirect. Todas as APIs XamlDirect são métodos de instância fora dessa classe.

XamlDirect é uma API para acessar o Xaml em um nível mais primitivo para melhorar o desempenho da CPU e do conjunto de trabalho.

API equivalente do WinUI 2 para UWP: Microsoft.UI.Xaml.Core.Direct.XamlDirect (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

Interfaces

IXamlDirectObject

Representa o tipo de objeto primário que participa do conjunto XamlDirect de APIs.

Enumerações

XamlEventIndex

Enumeração que lista todos os eventos com suporte no XamlDirect.

API equivalente do WinUI 2 para UWP: Microsoft.UI.Xaml.Core.Direct.XamlEventIndex (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

XamlPropertyIndex

Enumeração que lista todas as propriedades com suporte no XamlDirect.

API equivalente do WinUI 2 para UWP: Microsoft.UI.Xaml.Core.Direct.XamlPropertyIndex (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

XamlTypeIndex

Enumeração que lista todos os tipos com suporte no XamlDirect.

API equivalente do WinUI 2 para UWP: Microsoft.UI.Xaml.Core.Direct.XamlTypeIndex (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

Exemplos

Este exemplo demonstra como criar objetos, definir propriedades e interface com UIElements padrão de três maneiras: usando marcação XAML, usando tipos XAML regulares em C# e a nova maneira de usar APIs XamlDirect .

Neste exemplo, criamos um elemento Border e um elemento Rectangle e definimos algumas propriedades em cada um. Em seguida, os adicionamos à árvore de elementos da interface do usuário.

  1. Usando a marcação XAML:
<Grid x:Name="RootGrid">
    <Border BorderBrush="Black" BorderThickness="5">
        <Rectangle Height="100" Width="100" Fill="Red" />
    </Border>
</Grid>
  1. Usando código imperativo regular, com 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. Usando o código XamlDirect :

O código a seguir terá um desempenho maior do que o uso de tipos XAML completos, pois todas as operações como instanciação e configuração de propriedades em vários elementos são realizadas por meio de IXamlDirectObjects em vez dos 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));

Comentários

O XamlDirect é uma finalidade criada para middleware que usa predominantemente APIs imperativas para criar interface do usuário em vez de marcação. Com as APIs XamlDirect , você pode obter paridade de desempenho com o analisador XAML mesmo ao criar a interface do usuário imperativamente no código.

XamlDirect As APIs podem ser usadas lado a lado com APIs tradicionais e aproveitar o pagamento por melhorias no desempenho do jogo.

Nem todas as APIs Xaml estão disponíveis com XamlDirect. A enumeração XamlTypeIndex lista todos os tipos com suporte, a enumeração XamlPropertyIndex lista todas as propriedades com suporte e a enumeração XamlEventIndex lista todos os eventos com suporte.

Funções suportadas

Você pode executar as seguintes funções usando APIs XamlDirect:

Todos os objetos retornados por XamlDirect.CreateInstance são do tipo IXamlDirectObject. Todas as outras APIs, como as APIs set*property, assumem um IXamlDirectObject como seu primeiro parâmetro.

Para converter um IXamlDirectObject em seu APINDEX completo, por exemplo, um Botão, use o método XamlDirect.GetObject . Da mesma forma, você pode usar XamlDirect.GetXamlDirectObject para converter de um Object/DependencyObject completo para sua instância equivalente XamlDirect.

Confira também