컨트롤 템플릿의 속성 값을 템플릿이 적용된 컨트롤의 다른 노출된 속성 값에 연결합니다. TemplateBinding 은 XAML의 ControlTemplate 정의 내에서만 사용할 수 있습니다.
XAML 특성 사용
<object propertyName="{TemplateBinding sourceProperty}" .../>
XAML 특성 사용(템플릿 또는 스타일의 Setter 속성)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>
XAML 값
| 용어 | Description |
|---|---|
| propertyName | setter 구문에서 설정되는 속성의 이름입니다. 종속성 속성이어야 합니다. |
| 소스 속성 | 템플릿을 작성할 형식에 있는 다른 종속성 속성의 이름입니다. |
비고
TemplateBinding을 사용하는 것은 사용자 지정 컨트롤 작성자이거나 기존 컨트롤에 대한 컨트롤 템플릿을 대체하는 경우 컨트롤 템플릿을 정의하는 방법의 기본 부분입니다. 자세한 내용은 컨트롤 템플릿을 참조하세요.
propertyName 및 targetProperty에서 동일한 속성 이름을 사용하는 것이 일반적입니다. 이 경우 컨트롤은 자체적으로 속성을 정의하고 해당 구성 요소 중 하나의 기존 및 직관적으로 명명된 속성으로 속성을 전달할 수 있습니다. 예를 들어 컨트롤의 자체 Text 속성을 표시하는 데 사용되는 TextBlock을 작성에 통합하는 컨트롤은 이 XAML을 컨트롤 템플릿의 일부로 포함할 수 있습니다.<TextBlock Text="{TemplateBinding Text}" .... />
원본 속성 및 대상 속성의 값으로 사용되는 형식이 일치해야 합니다.
TemplateBinding을 사용하는 경우 변환기를 소개할 기회가 없습니다. 값을 일치시키지 못하면 XAML을 구문 분석할 때 오류가 발생합니다. 변환기가 필요한 경우 다음과 같은 템플릿 바인딩에 자세한 구문을 사용할 수 있습니다. {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}
XAML에서 ControlTemplate 정의 외부에서 TemplateBinding을 사용하려고 하면 파서 오류가 발생합니다.
템플릿화된 부모 값이 다른 바인딩으로 지연되는 경우 TemplateBinding 을 사용할 수 있습니다. TemplateBinding에 대한 평가는 필요한 런타임 바인딩에 값이 있을 때까지 기다릴 수 있습니다.
TemplateBinding은 항상 단방향 바인딩입니다. 관련된 두 속성은 모두 종속성 속성이어야 합니다.
TemplateBinding 은 태그 확장입니다. 태그 확장은 일반적으로 특성 값을 리터럴 값이나 처리기 이름이 아닌 다른 값으로 이스케이프해야 하는 경우에 구현되며, 요구 사항은 특정 형식 또는 속성에 형식 변환기를 배치하는 것보다 전역적입니다. XAML의 모든 태그 확장은 해당 특성 구문에 "{" 및 "}" 문자를 사용합니다. 이 규칙은 XAML 프로세서가 태그 확장에서 특성을 처리해야 한다는 것을 인식하는 규칙입니다.
메모 Windows 런타임 XAML 프로세서 구현에는 TemplateBinding에 대한 지원 클래스 표현이 없습니다. TemplateBinding 은 XAML 태그에서만 사용할 수 있습니다. 코드에서 동작을 재현하는 간단한 방법은 없습니다.
x:Bind를 ControlTemplate에 적용하기
비고
ControlTemplate에서 x:Bind를 사용하려면 Windows 10 버전 1809(SDK 17763) 이상이 필요합니다. 대상 버전에 대한 자세한 내용은 버전 적응 코드를 참조하세요.
Windows 10 버전 1809부터 ControlTemplate에서 TemplateBinding을 사용하는 모든 위치에서 x:Bind 태그 확장을 사용할 수 있습니다.
TargetType 속성은 x:Bind를 사용할 때 ControlTemplate에서 필수(선택 사항이 아님)입니다.
x:Bind 지원을 사용하면 ControlTemplate에서 함수 바인딩과 양방향 바인딩을 모두 사용할 수 있습니다.
이 예제에서 TextBlock.Text 속성은 Button.Content.ToString으로 평가됩니다. ControlTemplate의 TargetType은 데이터 원본 역할을 하며 부모에 대한 TemplateBinding과 동일한 결과를 수행합니다.
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock Text="{x:Bind Content, Mode=OneWay}"/>
</Grid>
</ControlTemplate>
관련 항목
Windows developer