RelativeSource Class

Definition

바인딩 대상의 위치를 기준으로 하여 바인딩 소스 위치를 설명하는 태그 확장을 구현합니다.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
Inheritance
RelativeSource
Attributes
Implements

Examples

다음 예제에서는 만든 스타일 트리거는 ToolTip 유효성 검사 오류 메시지를 보고 하는 합니다.The following example shows a style trigger that creates a ToolTip that reports a validation error message. 사용 하 여는 RelativeSource 오류 내용의 현재 속성 setter의 값을 바인딩합니다 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 되는 개체의는 TemplatedParentNumericUpDown 이 제어 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>

전체 샘플을 참조 하세요 테마 및 UI 자동화 지원 샘플이 있는 NumericUpDown 사용자 지정 컨트롤합니다.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)

Remarks

바인딩 소스를 지정 하는 방법 중 하나를 사용 하는 것은 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 모드 상위 항목 형식과 다른 모드 필요가 없는 수준에 대 한 두 개의 추가 인수를 사용 하 여 인라인으로 정의 될 수 있습니다.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.

Constructors

RelativeSource() RelativeSource 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the RelativeSource class.
RelativeSource(RelativeSourceMode)

초기 모드로 RelativeSource 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the RelativeSource class with an initial mode.

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.

Properties

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

찾을 상위 항목의 유형을 가져오거나 설정 합니다.Gets or sets the type of ancestor to look for.

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

RelativeSource 모드에 대해 생성된 PreviousData를 반환하는 데 사용되는 정적 값을 가져옵니다.Gets a static value that is used to return a RelativeSource constructed for the PreviousData mode.

Self

RelativeSource 모드에 대해 생성된 Self를 반환하는 데 사용되는 정적 값을 가져옵니다.Gets a static value that is used to return a RelativeSource constructed for the Self mode.

TemplatedParent

RelativeSource 모드에 대해 생성된 TemplatedParent를 반환하는 데 사용되는 정적 값을 가져옵니다.Gets a static value that is used to return a RelativeSource constructed for the TemplatedParent mode.

Methods

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(Inherited from Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
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()

AncestorLevel 속성을 지속해야 하는지 여부를 나타냅니다.Indicates whether the AncestorLevel property should be persisted.

ShouldSerializeAncestorType()

AncestorType 속성을 지속해야 하는지 여부를 나타냅니다.Indicates whether the AncestorType property should be persisted.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

Explicit Interface Implementations

ISupportInitialize.BeginInit()

이 멤버는 WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF) 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.This member supports the WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

ISupportInitialize.EndInit()

이 멤버는 WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF) 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.This member supports the WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

Applies to

See also