다음을 통해 공유


Binding.RelativeSource 속성

정의

바인딩 대상의 위치를 기준으로 해당 위치를 지정하여 바인딩 소스를 가져오거나 설정합니다. 이는 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 컨트롤의 시각적 상태 중 하나입니다. 여기서 시각적 상태로 정의된 애니메이션 중 하나는 템플릿이 액세스하고 애니메이션을 수정하는 런타임 값을 가져올 수 있도록 특별히 존재하는 컨트롤의 속성을 참조합니다. 템플릿 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 은 바인딩에서 상호 배타적입니다. 이러한 특성 중 하나를 설정한 경우 바인딩에서 다른 두 특성 중 하나를 설정하면(XAML을 통해 또는 코드를 통해) 예외가 발생합니다. XAML에서 RelativeSource를 설정하려면 항상 {RelativeSource} 태그 확장을 사용해야 합니다. 전체 바인딩을 {Binding} 태그 확장으로 만드는 경우에도 마찬가지입니다. 이 경우 {RelativeSource} 태그 확장 은 식의 RelativeSource 구성 요소 내에 중첩됩니다.

해당 바인딩이 대상 요소 및 대상 속성에 연결된 후에는 Binding 개체의 속성 값을 설정할 수 없습니다. 이 작업을 시도하면 런타임 예외가 발생합니다.

적용 대상

추가 정보