次の方法で共有


Windows.UI.Xaml.Core.Direct 名前空間

ミドルウェアがよりプリミティブ レベルでほとんどの Xaml にアクセスし、CPU とワーキング セットのパフォーマンスを向上させる XamlDirect API を提供します。

クラス

XamlDirect

すべての XamlDirect API の基本クラスを表します。 XamlDirect API はすべて、このクラスのインスタンス メソッドです。

XamlDirect は、CPU とワーキング セットのパフォーマンスを向上させるために、よりプリミティブ レベルで Xaml にアクセスするための API です。

UWP 用の同等の WinUI 2 API: Microsoft.UI.Xaml.Core.Direct.XamlDirect (Windows アプリ SDKの WinUI の場合は、Windows アプリ SDK名前空間を参照してください)。

インターフェイス

IXamlDirectObject

XAMLDirect API のセットに参加するプライマリ オブジェクトの種類を表します。

列挙型

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名前空間を参照してください)。

この例では、標準 UIElements を使用してオブジェクトを作成し、プロパティを設定し、インターフェイスを 3 つの方法で示します。XAML マークアップの使用、C# での通常の XAML 型の使用、 XamlDirect API の使用の新しい方法です。

この例では、 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 は、マークアップではなく UI を作成するために命令型 API を主に使用する ミドルウェア用に構築された目的 です。 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 同等のインスタンスに変換できます。

こちらもご覧ください