ContentPropertyAttribute クラス

定義

型のどのプロパティが XAML コンテンツ プロパティであるかを示します。 この情報を使用して、XAML プロセッサは属性付き型の XAML 表現の XAML 子要素を処理します。

public ref class ContentPropertyAttribute sealed : Attribute
[Windows.Foundation.Metadata.AttributeUsage(System.AttributeTargets.RuntimeClass)]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
public sealed class ContentPropertyAttribute : Attribute
Public NotInheritable Class ContentPropertyAttribute
Inherits Attribute
継承
ContentPropertyAttribute
属性

注釈

この属性は、XAML パーサーやその他の XAML フレームワーク コードによって解釈される場合に、属性付き型の特定のプロパティを XAML コンテンツ プロパティと見なす必要があることを識別するために使用されます。 XAML コンテンツ プロパティの目的は、そのプロパティのプロパティ要素マークアップを省略できる XAML 構文の短縮形を提供することです。 プロパティ要素を削除すると、XAML マークアップでより自然な親子フォームが容易になります。 XAML コンテンツ プロパティの詳細については、XAML 構文ガイドの「XAML コンテンツ プロパティ」セクションを参照してください。

ContentPropertyAttribute が適用されている既定のWindows ランタイム XAML ボキャブラリのクラスの例は、Panel ですPanelChildren プロパティは、ContentPropertyAttribute とその Name 値によって定義された XAML コンテンツ プロパティとして識別されます。 コンテンツ プロパティ情報は、GridCanvasStackPanel など、すべての派生型の Panel によって継承されます。

このコードは、 Panel が C# で ContentPropertyAttribute を適用する方法を概算します (真の定義はネイティブ コードで適用されます。これは説明のみを目的としています)。

[ContentProperty(Name = "Children")]
    public class Panel : FrameworkElement
    { ...}

XAML コンテンツ プロパティの概念の図として Panel とその派生クラス StackPanel を使用すると、次の XAML を使用できます。

<StackPanel>
  <StackPanel.Children>
    <TextBlock>Testing content attribute</TextBlock>
  </StackPanel.Children>
</StackPanel>

上記は、より読みやすい XAML と同じです。

<StackPanel>
  <TextBlock>Testing content attribute</TextBlock>
</StackPanel>

XAML パーサーによって解析されると、パーサーは、Panel に適用された ContentPropertyAttribute を通じて、StackPanel タグの本文内にあるコンテンツを使用して、作成された StackPanel インスタンスの Children の値を設定する必要があることを認識します。

ContentPropertyAttribute のアクションのもう 1 つの顕著な例は 、TextBlock クラスで確認できます。 TextBlock では コンテンツ プロパティとして Inlines が使用され、既定のインライン クラス Run ではコンテンツ プロパティとして Text が使用されます。 組み合わせて、この XAML によって作成されたオブジェクト グラフがより複雑であり、必要に応じて複数の明示的なインライン要素をサポートすることもできますが、 などの <TextBlock>Hello</TextBlock>単純なインライン構文がコンテンツ プロパティによって有効になります。

コンストラクター

ContentPropertyAttribute()

ContentPropertyAttribute クラスの新しいインスタンスを初期化します。

フィールド

Name

型のどのプロパティが XAML コンテンツ プロパティであるかを示します。 この情報を使用して、XAML プロセッサは属性付き型の XAML 表現の XAML 子要素を処理します。

適用対象

こちらもご覧ください