RelativeSource RelativeSource RelativeSource RelativeSource Class

定義

バインディング ソースの位置を、バインディング ターゲットの位置を基準とする相対的な位置として示すマークアップ拡張機能を実装します。Implements a markup extension that describes the location of the binding source relative to the position of the binding target.

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
type RelativeSource = class
    inherit MarkupExtension
    interface ISupportInitialize
Public Class RelativeSource
Inherits MarkupExtension
Implements ISupportInitialize
継承
RelativeSourceRelativeSourceRelativeSourceRelativeSource
属性
実装

次の例は、スタイルのトリガーを作成する、ToolTip検証エラー メッセージを報告します。The following example shows a style trigger that creates a ToolTip that reports a validation error message. 使用して、RelativeSourceプロパティが、現在のエラー コンテンツに、set アクセス操作子の値がバインドTextBox(、TextBoxスタイルを使用)。Using the RelativeSource property, the value of the setter binds to the error content of the current TextBox (the TextBox using the style). この例の詳細については、次を参照してください。方法。検証にバインド実装します。For more information on this example, see How to: Implement Binding Validation.

<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>

次の例は、Styleカスタム コントロールの定義と呼ばれるNumericUpDownします。The following example shows the Style definition of a custom control called NumericUpDown. Textのプロパティ、TextBlockにバインドされて、ValueであるオブジェクトのTemplatedParent、これは、NumericUpDownこの制御Styleにここで適用されます。The Text property of the TextBlock is bound to the Value of the object that is the TemplatedParent, which is the NumericUpDown control that this Style is applied to in this case.

<!--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>

サンプル全体については、次を参照してください。 NumericUpDown カスタム コントロールのテーマと UI Automation Support Sampleします。For the complete sample, see NumericUpDown Custom Control with Theme and UI Automation Support Sample.

次は、秒を返します。ItemsControlバインディングのターゲット要素から上方向のパスで発生しました。The following returns the second ItemsControl encountered on the upward path starting at the target element of the binding.

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プロパティ。One of the ways to specify a binding source is to use the Binding.RelativeSource property. これは、そのプロパティのプロパティの型です。This is the property type of that property. RelativeSource マークアップ拡張機能の実装とデータ オブジェクトは、同時にします。RelativeSource is simultaneously a markup extension implementation and a data object. ときに、拡張機能を返します自体 (を参照してくださいProvideValue)、データに関連する情報が含まれます。When the extension returns itself (see ProvideValue), the relevant information is contained in the data. マークアップ拡張機能の主な目的は、属性の形式で、可変個引数のコンス トラクター構文を許可するように、FindAncestorモードは、2 つの余分な引数の先祖の型およびその他のモードを必要としないレベルでインラインで定義できます。The main purpose of the markup extension is to allow a variable-argument constructor syntax in attribute form, so that the FindAncestor mode can be defined inline with the two extra arguments for ancestor type and level that the other modes do not require.

XAMLXAMLについてを参照してくださいRelativeSource のマークアップ拡張機能します。For XAMLXAML information, see RelativeSource MarkupExtension.

コンストラクター

RelativeSource() RelativeSource() RelativeSource() RelativeSource()

RelativeSource クラスの新しいインスタンスを初期化します。Initializes a new instance of the RelativeSource class.

RelativeSource(RelativeSourceMode) RelativeSource(RelativeSourceMode) RelativeSource(RelativeSourceMode) RelativeSource(RelativeSourceMode)

初期モードを指定して、RelativeSource クラスの新しいインスタンスを初期化します。Initializes a new instance of the RelativeSource class with an initial mode.

RelativeSource(RelativeSourceMode, Type, Int32) RelativeSource(RelativeSourceMode, Type, Int32) RelativeSource(RelativeSourceMode, Type, Int32) RelativeSource(RelativeSourceMode, Type, Int32)

初期モードと必要な相対ソースを検出するために追加のツリー探索用の修飾子を使用して、RelativeSource クラスの新しいインスタンスを初期化します。Initializes a new instance of the RelativeSource class with an initial mode and additional tree-walking qualifiers for finding the desired relative source.

プロパティ

AncestorLevel AncestorLevel AncestorLevel AncestorLevel

FindAncestor モードで、検索する先祖のレベルを取得または設定します。Gets or sets the level of ancestor to look for, in FindAncestor mode. バインドのターゲット要素に一番近いレベルを示すには、1 を使用します。Use 1 to indicate the one nearest to the binding target element.

AncestorType AncestorType AncestorType AncestorType

検索する先祖の型を取得または設定します。Gets or sets the type of ancestor to look for.

Mode Mode Mode Mode

バインディング ターゲットの位置を基準とする、バインディング ソースの相対的な位置を示す RelativeSourceMode 値を取得または設定します。Gets or sets a RelativeSourceMode value that describes the location of the binding source relative to the position of the binding target.

PreviousData PreviousData PreviousData PreviousData

RelativeSource モード用に構築された PreviousData を返すために使用する静的な値を取得します。Gets a static value that is used to return a RelativeSource constructed for the PreviousData mode.

Self Self Self Self

RelativeSource モード用に構築された Self を返すために使用する静的な値を取得します。Gets a static value that is used to return a RelativeSource constructed for the Self mode.

TemplatedParent TemplatedParent TemplatedParent TemplatedParent

RelativeSource モード用に構築された TemplatedParent を返すために使用する静的な値を取得します。Gets a static value that is used to return a RelativeSource constructed for the TemplatedParent mode.

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ProvideValue(IServiceProvider) ProvideValue(IServiceProvider) ProvideValue(IServiceProvider) ProvideValue(IServiceProvider)

このマークアップ拡張機能で使用するターゲット オブジェクトのプロパティ上の値として設定するオブジェクトを返します。Returns an object that should be set as the value on the target object's property for this markup extension. RelativeSource の場合、これは、指定したモードに適したソースを使用する別の RelativeSource です。For RelativeSource, this is another RelativeSource, using the appropriate source for the specified mode.

ShouldSerializeAncestorLevel() ShouldSerializeAncestorLevel() ShouldSerializeAncestorLevel() ShouldSerializeAncestorLevel()

AncestorLevel プロパティを永続化する必要があるかどうかを示します。Indicates whether the AncestorLevel property should be persisted.

ShouldSerializeAncestorType() ShouldSerializeAncestorType() ShouldSerializeAncestorType() ShouldSerializeAncestorType()

AncestorType プロパティを永続化する必要があるかどうかを示します。Indicates whether the AncestorType property should be persisted.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

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

ISupportInitialize.BeginInit() ISupportInitialize.BeginInit() ISupportInitialize.BeginInit() ISupportInitialize.BeginInit()

このメンバーは、Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) インフラストラクチャをサポートしますが、独自に作成したコードから直接使用するためのものではありません。This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

ISupportInitialize.EndInit() ISupportInitialize.EndInit() ISupportInitialize.EndInit() ISupportInitialize.EndInit()

このメンバーは、Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) インフラストラクチャをサポートしますが、独自に作成したコードから直接使用するためのものではありません。This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

適用対象

こちらもご覧ください