RelativeSource のマークアップ拡張機能

更新 : 2007 年 11 月

バインディングのマークアップ拡張機能内で、または XAML で設定された Binding 要素の RelativeSource プロパティの設定時に使用される RelativeSource バインディング ソースのプロパティを指定します。

XAML 属性の使用方法

<Binding RelativeSource="{RelativeSource modeEnumValue}" .../>

XAML 属性の使用方法 (バインディング拡張内で入れ子にした場合)

<object property="{Binding RelativeSource={RelativeSource modeEnumValue} ...}" .../>

XAML オブジェクト要素の使用方法

<Binding>
  <Binding.RelativeSource>
    <RelativeSource Mode="modeEnumValue"/>
  </Binding.RelativeSource>
</Binding>
- or 
<Binding>
  <Binding.RelativeSource>
    <RelativeSource
      Mode="FindAncestor"
      AncestorType="{x:Type typeName}"
      AncestorLevel="intLevel"
    />
  </Binding.RelativeSource>
</Binding>

XAML 値

modeEnumValue

次のいずれかになります。

  • 文字列トークン Self。RelativeSource に対応し、Mode プロパティは Self に設定されます。

  • 文字列トークン TemplatedParent。RelativeSource に対応し、Mode プロパティは TemplatedParent に設定されます。

  • 文字列トークン PreviousData。RelativeSource に対応し、Mode プロパティは PreviousData に設定されます。

  • FindAncestor については、以下を参照してください。

FindAncestor

文字列トークン FindAncestor。このトークンを使用すると、RelativeSource によって先祖の型およびオプションで先祖レベルを指定するモードになります。これは、Mode プロパティが FindAncestor に設定された状態で作成された RelativeSource に対応します。

typeName

FindAncestor モードで必要です。AncestorType プロパティに指定する型の名前。

intLevel

FindAncestor モードのオプションです。論理ツリー内で親の方向に向けて数えた先祖レベル。

解説

上に示した FindAncestor モードのオブジェクト要素構文では、2 番目のオブジェクト要素構文は FindAncestor モード向けに使用されます。FindAncestor モードでは、AncestorType 値が必要です。検索する先祖の型への x:Type マークアップ拡張機能参照を使用して、AncestorType を属性として設定する必要があります。AncestorType 値は、実行時にバインディング要求を処理する際に使用されます。

FindAncestor モードでは、オプションの AncestorLevel プロパティは、要素ツリー内に型の先祖が複数存在する可能性がある場合に、先祖の検索のあいまいさを解消するのに役立ちます。

FindAncestor モードの使用の詳細については、RelativeSource を参照してください。

ここで説明されていないデータ バインディングの概念については、「データ バインディングの概要」を参照してください。

WPF XAML プロセッサ実装では、このマークアップ拡張機能の処理は、RelativeSource クラスによって定義されます。

RelativeSource はマークアップ拡張機能です。一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラ名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバータを適用するだけにとどまない場合です。XAML のすべてのマークアップ拡張機能では、それぞれの属性構文で { と } の 2 つの記号を使用します。これは規約であり、これに従って XAML プロセッサは、マークアップ拡張機能で属性を処理する必要があることを認識します。詳細については、「マークアップ拡張機能と XAML」を参照してください。

参照

概念

スタイルとテンプレート

XAML の概要

マークアップ拡張機能と XAML

データ バインディングの概要

バインディング宣言の概要

参照

Binding

x:Type マークアップ拡張機能