Binding.RelativeSource プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
バインディング ターゲットの位置に対して相対的な位置を指定することにより、バインディング ソースを取得または設定します。 これは、XAML コントロール テンプレート内のバインドで最もよく使われます。
RelativeSource RelativeSource();
void RelativeSource(RelativeSource value);
public RelativeSource RelativeSource { get; set; }
var relativeSource = binding.relativeSource;
binding.relativeSource = relativeSource;
Public Property RelativeSource As RelativeSource
<Binding RelativeSource="{RelativeSource TemplatedParent}"/>
-or-
<Binding RelativeSource="{RelativeSource Self}"/>
プロパティ値
使用するバインディング ソースの相対位置。 既定値は null です。
例
この XAML の例は、すべての XAML コントロールの既定のビジュアル状態を定義する generic.xaml ファイルから取得されています。 この特定のセグメントは、 ToggleSwitch コントロールの表示状態の 1 つです。 ここでは、ビジュアル状態で定義されているアニメーションの 1 つは、テンプレートがそれらにアクセスし、アニメーションを変更する実行時の値を取得できるように、具体的に存在するコントロールのプロパティを参照します。 テンプレート XAML がテンプレートが適用されているコントロールからプロパティを取得するには、バインドで RelativeSource 値として を使用 {RelativeSource TemplatedParent}
する必要があります。
<VisualStateGroup x:Name="ToggleStates">
<VisualStateGroup.Transitions>
<VisualTransition x:Name="DraggingToOnTransition"
From="Dragging"
To="On"
GeneratedDuration="0">
<Storyboard>
<RepositionThemeAnimation TargetName="SwitchKnob"
FromHorizontalOffset="
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobCurrentToOnOffset}"
/>
<RepositionThemeAnimation TargetName="SwitchCurtain"
FromHorizontalOffset="
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.CurtainCurrentToOnOffset}"
/>
</Storyboard>
</VisualTransition>
...
</VisualStateGroup.Transitions>
</VisualStateGroup>
注釈
Source、RelativeSource、 および ElementName は、バインド内で相互に排他的です。 これらの属性の 1 つを設定した場合、バインディング内の他の 2 つ (XAML またはコードを使用) のいずれかを設定すると、例外が発生します。 XAML で RelativeSource を設定するには、常に {RelativeSource} マークアップ拡張機能を使用する必要があります。 これは、バインド全体を {Binding} マークアップ拡張機能として作成する場合にも当てはまります。この場合、 {RelativeSource} マークアップ拡張機能 は式の RelativeSource コンポーネント内に入れ子になっています。
バインドがターゲット要素とターゲット プロパティにアタッチされた後は、 Binding オブジェクトのプロパティ値を設定できません。 これを試みると、実行時の例外が発生します。