다음을 통해 공유


Windows.UI.Xaml.Core.Direct 네임스페이스

미들웨어가 좀 더 기본적인 수준에서 대부분의 Xaml에 액세스할 수 있도록 하는 XamlDirect API를 제공하여 더 나은 CPU 및 작업 집합 성능을 달성합니다.

클래스

XamlDirect

모든 XamlDirect API의 기본 클래스를 나타냅니다. 모든 XamlDirect API는 이 클래스에서 instance 메서드입니다.

XamlDirect 는 더 나은 CPU 및 작업 집합 성능을 위해 보다 기본적인 수준에서 Xaml에 액세스하기 위한 API입니다.

UWP용 동등한 WinUI 2 API: Microsoft.UI.Xaml.Core.Direct.XamlDirect(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조).

인터페이스

IXamlDirectObject

API의 XamlDirect 집합에 참여하는 기본 개체 형식을 나타냅니다.

열거형

XamlEventIndex

XamlDirect에서 지원되는 모든 이벤트를 나열하는 열거형입니다.

UWP에 해당하는 WinUI 2 API: Microsoft.UI.Xaml.Core.Direct.XamlEventIndex(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조).

XamlPropertyIndex

XamlDirect에서 지원되는 모든 속성을 나열하는 열거형입니다.

UWP에 해당하는 WinUI 2 API: Microsoft.UI.Xaml.Core.Direct.XamlPropertyIndex(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조).

XamlTypeIndex

XamlDirect에서 지원되는 모든 형식을 나열하는 열거형입니다.

UWP에 해당하는 WinUI 2 API: Microsoft.UI.Xaml.Core.Direct.XamlTypeIndex(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조).

예제

이 예제에서는 XAML 태그 사용, C#의 일반 XAML 형식 사용, XamlDirect API를 사용하는 새로운 방법 등 세 가지 방법으로 표준 UIElements를 사용하여 개체를 만들고, 속성을 설정하고, 인터페이스를 설정하는 방법을 보여 줍니다.

이 예제에서는 Border 요소와 Rectangle 요소를 만들고 각각에 몇 가지 속성을 설정합니다. 그런 다음 UI 요소의 트리에 추가합니다.

  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를 사용하여 태그 대신 UI를 만드는 미들웨어 용으로 빌드되었습니다. XamlDirect API를 사용하면 코드에서 명령적으로 UI를 만들 때도 XAML 파서와 성능 패리티를 달성할 수 있습니다.

XamlDirect API는 기존 API와 나란히 사용할 수 있으며 플레이 성능 향상에 대한 비용을 활용할 수 있습니다.

XamlDirect에서 모든 Xaml API를 사용할 수 있는 것은 아닙니다. XamlTypeIndex 열거형은 지원되는 모든 형식을 나열하고, XamlPropertyIndex 열거형은 지원되는 모든 속성을 나열하고, XamlEventIndex 열거형은 지원되는 모든 이벤트를 나열합니다.

지원되는 함수

XamlDirect API를 사용하여 다음 함수를 수행할 수 있습니다.

XamlDirect.CreateInstance에서 반환되는 모든 개체는 IXamlDirectObject 형식입니다. Set*Property API와 같은 다른 모든 API는 IXamlDirectObject 를 첫 번째 매개 변수로 사용합니다.

IXamlDirectObject를 전체 APINDEX로 변환하려면(예: Button) XamlDirect.GetObject 메서드를 사용합니다. 마찬가지로 XamlDirect.GetXamlDirectObject를 사용하여 전체 Object/DependencyObject에서 해당 XamlDirect 동등한 instance 변환할 수 있습니다.

추가 정보