Windows.UI.Xaml.Core.Direct 네임스페이스
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
미들웨어가 좀 더 기본적인 수준에서 대부분의 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 요소의 트리에 추가합니다.
- XAML 태그 사용:
<Grid x:Name="RootGrid">
<Border BorderBrush="Black" BorderThickness="5">
<Rectangle Height="100" Width="100" Fill="Red" />
</Border>
</Grid>
- 전체 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);
- 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를 사용하여 Button과 같은 일반 Xaml 형식에 대한 내부 Xaml 개체의 instance 만듭니다.
- 속성의 형식에 따라 XamlDirect.Set-Property 메서드의 적절한 변형 중 하나를 사용하여 속성 값을 설정합니다. 예를 들어 SolidColorBrush.Color 속성에 XamlDirect.SetColorProperty를 사용합니다. 마찬가지로 Get-Property 메서드를 사용하여 특정 속성에 액세스합니다.
- XamlDirect.AddToCollection을 사용하여 Panel.Children과 같은 컬렉션에 항목을 추가하고 XamlDirect.RemoveFromCollection을 사용하여 컬렉션에서 항목을 제거합니다. XamlDirect는 GetCollectionCount, ClearCollection, InsertIntoCollectionAt, RemoveFromCollectionAt 및 GetXamlDirectObjectFromCollectionAt을 비롯한 다양한 컬렉션 작업을 지원합니다.
- XamlDirect.AddEventHandler를 사용하여 Button.Click과 같은 이벤트 처리기를 추가하고 마찬가지로 XamlDirect.RemoveEventHandler를 사용하여 이벤트 처리기를 제거합니다.
XamlDirect.CreateInstance에서 반환되는 모든 개체는 IXamlDirectObject 형식입니다. Set*Property API와 같은 다른 모든 API는 IXamlDirectObject 를 첫 번째 매개 변수로 사용합니다.
IXamlDirectObject를 전체 APINDEX로 변환하려면(예: Button) XamlDirect.GetObject 메서드를 사용합니다. 마찬가지로 XamlDirect.GetXamlDirectObject를 사용하여 전체 Object/DependencyObject에서 해당 XamlDirect 동등한 instance 변환할 수 있습니다.