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 컨트롤의 시각적 상태 중 하나입니다. 여기서 시각적 상태로 정의된 애니메이션 중 하나는 템플릿이 액세스하고 애니메이션을 수정하는 런타임 값을 가져올 수 있도록 특별히 존재하는 컨트롤의 속성을 참조합니다. 템플릿 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 개체의 속성 값을 설정할 수 없습니다. 이 작업을 시도하면 런타임 예외가 발생합니다.