Share via


{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>