{TemplateBinding} 태그 확장

컨트롤 템플릿의 속성 값을 템플릿이 적용된 컨트롤의 다른 노출된 속성 값에 연결합니다. TemplateBinding 은 XAML의 ControlTemplate 정의 내에서만 사용할 수 있습니다.

XAML 특성 사용

<object propertyName="{TemplateBinding sourceProperty}" .../>

XAML 특성 사용(템플릿 또는 스타일의 Setter 속성)

<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>

XAML 값

용어 설명
propertyName setter 구문에서 설정되는 속성의 이름입니다. 종속성 속성이어야 합니다.
sourceProperty 템플릿을 작성할 형식에 있는 다른 종속성 속성의 이름입니다.

설명

TemplateBinding을 사용하는 것은 사용자 지정 컨트롤 작성자이거나 기존 컨트롤에 대한 컨트롤 템플릿을 대체하는 경우 컨트롤 템플릿을 정의하는 방법의 기본 부분입니다. 자세한 내용은 빠른 시작: 컨트롤 템플릿을 참조 하세요.

propertyNametargetProperty에서 동일한 속성 이름을 사용하는 것이 일반적입니다. 이 경우 컨트롤은 자체적으로 속성을 정의하고 해당 구성 요소 중 하나의 기존 및 직관적으로 명명된 속성으로 속성을 전달할 수 있습니다. 예를 들어 컨트롤 합성으로 TextBlock을 통합하는 컨트롤을 사용하여 컨트롤의 고유 Text 속성을 표시하면 이 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 태그에서만 사용할 수 있습니다. 코드에서 동작을 재현하는 간단한 방법은 없습니다.

ControlTemplate의 x:Bind

참고 항목

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>