RelativeSource クラス

定義

バインディング ソースの位置を、バインディング ターゲットの位置を基準とする相対的な位置として示すマークアップ拡張機能を実装します。

public ref class RelativeSource : System::Windows::Markup::MarkupExtension, System::ComponentModel::ISupportInitialize
[System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))]
public class RelativeSource : System.Windows.Markup.MarkupExtension, System.ComponentModel.ISupportInitialize
[<System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))>]
type RelativeSource = class
    inherit MarkupExtension
    interface ISupportInitialize
Public Class RelativeSource
Inherits MarkupExtension
Implements ISupportInitialize
継承
RelativeSource
属性
実装

次の例は、検証エラー メッセージを報告する ToolTip スタイル トリガーを示しています。 このプロパティを RelativeSource 使用すると、setter の値は現在 TextBox のエラー コンテンツ ( TextBox スタイルの使用) にバインドされます。 この例の詳細については、「 方法: バインド検証を実装する」を参照してください。

<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
  <Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
      <Setter Property="ToolTip"
        Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                        Path=(Validation.Errors)/ErrorContent}"/>
    </Trigger>
  </Style.Triggers>
</Style>

次の例は、カスタム NumericUpDownコントロールのStyle定義を示しています。 のプロパティはText、この場合にValue適用されるコントロールStyleであるオブジェクトTemplatedParent``NumericUpDownのプロパティにバインドされます。TextBlock

<!--ControlTemplate for NumericUpDown that inherits from
    Control.-->
<Style TargetType="{x:Type local:NumericUpDown}">
  <Setter Property="HorizontalAlignment" Value="Center"/>
  <Setter Property="VerticalAlignment" Value="Center"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type local:NumericUpDown}">
        <Grid Margin="3">
          <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
          </Grid.ColumnDefinitions>

          <Border BorderThickness="1" BorderBrush="Gray" 
                  Margin="2" Grid.RowSpan="2" 
                  VerticalAlignment="Center" HorizontalAlignment="Stretch">
                  
            <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value}" 
                       Width="60" TextAlignment="Right" Padding="5"/>
          </Border>
          
          <RepeatButton Command="{x:Static local:NumericUpDown.IncreaseCommand}"  
                        Grid.Column="1" Grid.Row="0">Up</RepeatButton>
                        
          <RepeatButton Command="{x:Static local:NumericUpDown.DecreaseCommand}"
                        Grid.Column="1" Grid.Row="1">Down</RepeatButton>

        </Grid>

      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

次は、バインディングのターゲット要素から始まる上向きのパスで検出された 2 番目 ItemsControl の値を返します。

Binding myBinding = new Binding();
// Returns the second ItemsControl encountered on the upward path
// starting at the target element of the binding
myBinding.RelativeSource = new RelativeSource(
    RelativeSourceMode.FindAncestor, typeof(ItemsControl), 2);
Dim myBinding As New Binding()
' Returns the second ItemsControl encountered on the upward path
' starting at the target element of the binding
myBinding.RelativeSource = New RelativeSource(RelativeSourceMode.FindAncestor, GetType(ItemsControl), 2)

注釈

バインディング ソースを指定する方法の 1 つは、プロパティを Binding.RelativeSource 使用することです。 これは、そのプロパティのプロパティ型です。 RelativeSource は、同時にマークアップ拡張機能の実装とデータ オブジェクトです。 拡張機能がそれ自体を返すと (参照 ProvideValue)、関連する情報がデータに含まれます。 マークアップ拡張の主な目的は、属性形式で可変引数コンストラクター構文を許可し、他の FindAncestor モードで必要のない先祖型とレベルの 2 つの追加引数を使用してインラインでモードを定義できるようにすることです。

XAML の詳細については、「 RelativeSource MarkupExtension」を参照してください。

コンストラクター

RelativeSource()

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

RelativeSource(RelativeSourceMode)

初期モードを指定して、RelativeSource クラスの新しいインスタンスを初期化します。

RelativeSource(RelativeSourceMode, Type, Int32)

初期モードと必要な相対ソースを検出するために追加のツリー探索用の修飾子を使用して、RelativeSource クラスの新しいインスタンスを初期化します。

プロパティ

AncestorLevel

FindAncestor モードで、検索する先祖のレベルを取得または設定します。 バインドのターゲット要素に一番近いレベルを示すには、1 を使用します。

AncestorType

検索する先祖の型を取得または設定します。

Mode

バインディング ターゲットの位置を基準とする、バインディング ソースの相対的な位置を示す RelativeSourceMode 値を取得または設定します。

PreviousData

RelativeSource モード用に構築された PreviousData を返すために使用する静的な値を取得します。

Self

RelativeSource モード用に構築された Self を返すために使用する静的な値を取得します。

TemplatedParent

RelativeSource モード用に構築された TemplatedParent を返すために使用する静的な値を取得します。

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ProvideValue(IServiceProvider)

このマークアップ拡張機能で使用するターゲット オブジェクトのプロパティ上の値として設定するオブジェクトを返します。 RelativeSource の場合、これは、指定したモードに適したソースを使用する別の RelativeSource です。

ShouldSerializeAncestorLevel()

AncestorLevel プロパティを永続化する必要があるかどうかを示します。

ShouldSerializeAncestorType()

AncestorType プロパティを永続化する必要があるかどうかを示します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

ISupportInitialize.BeginInit()

このメンバーは、Windows Presentation Foundation (WPF) インフラストラクチャをサポートしており、コードから直接使用することを意図していません。

ISupportInitialize.EndInit()

このメンバーは、Windows Presentation Foundation (WPF) インフラストラクチャをサポートしており、コードから直接使用することを意図していません。

適用対象

こちらもご覧ください