Windows.UI.Xaml.Core.Direct Пространство имен

Предоставляет API XamlDirect , которые позволяют ПО промежуточного слоя получать доступ к большей части Xaml на более примитивном уровне, обеспечивая лучшую производительность ЦП и рабочих наборов.

Классы

XamlDirect

Представляет базовый класс для всех API XamlDirect. Все API XamlDirect являются методами экземпляра этого класса.

XamlDirect — это API для доступа к Xaml на более примитивном уровне для повышения производительности ЦП и рабочего набора.

Эквивалентный API WinUI 2 для UWP: Microsoft.UI.Xaml.Core.Direct.XamlDirect (для WinUI в Windows App SDK см. Windows App SDK пространства имен).

Интерфейсы

IXamlDirectObject

Представляет тип первичного объекта, который участвует в наборе API XamlDirect .

Перечисления

XamlEventIndex

Перечисление со списком всех поддерживаемых событий в XamlDirect.

Эквивалентный API WinUI 2 для UWP: Microsoft.UI.Xaml.Core.Direct.XamlEventIndex (для WinUI в Windows App SDK см. Windows App SDK пространства имен).

XamlPropertyIndex

Перечисление со списком всех поддерживаемых свойств в XamlDirect.

Эквивалентный API WinUI 2 для UWP: Microsoft.UI.Xaml.Core.Direct.XamlPropertyIndex (для WinUI в Windows App SDK см. Windows App SDK пространства имен).

XamlTypeIndex

Перечисление со списком всех поддерживаемых типов в XamlDirect.

Эквивалентный API WinUI 2 для UWP: Microsoft.UI.Xaml.Core.Direct.XamlTypeIndex (для WinUI в Windows App SDK см. Windows App SDK пространства имен).

Примеры

В этом примере показано, как создавать объекты, задавать свойства и интерфейсы со стандартными элементами UIElements 3 способами: с помощью разметки XAML, обычными типами XAML в C# и новым способом с помощью API XamlDirect .

В этом примере мы создадим элементы Border и Rectangle и задаем несколько свойств для каждого из них. Затем мы добавим их в дерево элементов пользовательского интерфейса.

  1. Использование разметки XAML:
<Grid x:Name="RootGrid">
    <Border BorderBrush="Black" BorderThickness="5">
        <Rectangle Height="100" Width="100" Fill="Red" />
    </Border>
</Grid>
  1. Использование обычного императивного кода с полными типами XAML:
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. Использование кода XamlDirect :

Следующий код будет иметь более высокую производительность, чем использование полных типов XAML, так как все операции, такие как создание экземпляров и задание свойств для различных элементов, выполняются с помощью IXamlDirectObjects вместо полных типов XAML.

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

Комментарии

XamlDirect предназначен для ПО промежуточного слоя , которое преимущественно использует императивные API для создания пользовательского интерфейса вместо разметки. С помощью API XamlDirect можно достичь четности производительности с помощью средства синтаксического анализа XAML даже при императивном создании пользовательского интерфейса в коде.

XamlDirect API можно использовать параллельно с традиционными API и воспользоваться преимуществами повышения производительности с оплатой за игру.

Не все API Xaml доступны в XamlDirect. Перечисление XamlTypeIndex содержит список всех поддерживаемых типов, перечисление XamlPropertyIndex — все поддерживаемые свойства, а перечисление XamlEventIndex — все поддерживаемые события.

Поддерживаемые функции

С помощью API XamlDirect можно выполнять следующие функции:

Все объекты, возвращаемые XamlDirect.CreateInstance , имеют тип IXamlDirectObject. Все остальные API, такие как API Set*Property, принимают IXamlDirectObject в качестве первого параметра.

Чтобы преобразовать IXamlDirectObject в полный APINDEX, например Button, используйте метод XamlDirect.GetObject . Аналогичным образом можно использовать XamlDirect.GetXamlDirectObject для преобразования из полного объекта Object/DependencyObject в эквивалентный экземпляр XamlDirect.

См. также раздел