템플릿 바인딩과 바인딩은 무엇입니까?
나는 이해할 수 없었습니다.BorderThickness="{TemplateBinding BorderThickness}
여기 코드가 있습니다.
<ControlTemplate TargetType="{x:Type wpftoolkit:DataGridCell}">
<Border Padding="{TemplateBinding Padding}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>
또한 다른 종류의 바인딩에 대해서도 설명 부탁드립니다.
TemplateBinding은 템플릿 정의 내의 요소 속성에 바인딩하는 데 사용됩니다.예를 들어, 다음과 같이 적을 수 있습니다.
<Border Padding="{Binding Padding}" ...>
국경의 패딩 속성을 ...의 패딩 속성에 결합시키는 것을 의미합니다.뭐라고요? "이 템플릿이 사용되는 컨트롤의 속성을 추가합니다."라고 말하고 싶습니다.이때 컨트롤의 x:Name을 모르기 때문에 이름을 지정할 수 없습니다(알았더라도 다른 이름 범위에 있기 때문에 작동하지 않습니다).그러나 상대 소스를 정의하여 이 작업을 수행할 수 있습니다.
<Border Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}" ...>
또는 위의 바로 가기(*)인 TemplateBinding을 사용합니다.
<Border Padding="{TemplateBinding Padding}" ...>
(*) 이러한 템플릿 시나리오에서 TemplateBinding은 덜 장황할 뿐만 아니라 일반 바인딩에 비해 몇 가지 차이점이 있습니다.
- 컴파일 시간에 평가됩니다.예를 들어 Padding 속성이 없는 경우 컴파일 오류가 발생합니다.그러나 TemplatedParent와 바인딩을 사용하는 경우 런타임에만 오류가 표시됩니다.)
- 이것은 항상 단방향 바인딩입니다.
- 원본 속성과 대상 속성이 모두 종속성 속성이어야 합니다.
- 기능이 훨씬 적습니다(StringFormat, Delay, IsAsync 등 없음).Binding vs TemplateBindingExtension)의 속성을 참조하십시오.
천 마디 말보다 한 번 보는 게 더 낫다.이 경우 7분 비디오입니다. https://www.youtube.com/watch?v=z-0TZR-7xLI
편집: 예:
- A
Button
기본값이 있습니다.ControlTemplate
재산과Height
소유물 - 당신은 무시합니다.
ControlTemplate
의 특성Button
당신 자신의 것을 적음으로써 (예를 들어 당신은 만들기를 원합니다.Ellipse
- 단추 대신 보기Rectangle
-보기) - 당신이 만든 후에.
Ellipse
새것에ControlTemplate
당신은 그것을 원합니다.Ellipse
원래 버튼의 것과 같은 크기입니다.Height
소유물 - 그래서 당신은 사용합니다.
TemplateBinding
참고로Button
의Height
이름을 대지 않고
Eren Erönmenz는 이미 꽤 잘 설명했지만, 저는 개념을 더 잘 이해하기 위해 다른 관점을 주고 싶습니다.
WPF에서 모든 컨트롤은 프레젠테이션에서 다소 분리됩니다.언제든지 컨트롤 템플릿을 변경하여 완전히 다른 모양으로 만들 수 있습니다.버튼은 예상대로 작동합니다.ControlTemplate
오직 a로만 구성된Rectangle
예를들면.이제 때때로 그것은 필요합니다.ControlTemplate
컨트롤의 로직 부분 속성을 실제로 사용합니다.그리고 그것이TemplateBinding
그것은 단지 그것이 말해주기 때문입니다.ControlTemplate
"시각적 프레젠테이션을 제공하는 컨트롤의 이 속성을 사용하십시오."좋은 예는Background
모든 컨트롤의 속성, 그것은 그 자체로 의미가 없습니다. 그것은 그것의 의미를 얻습니다.TemplateBinding
그것은 아동 통제에.ControlTemplate
.
바인딩 자체는 MSDN에서 매우 잘 설명됩니다.이것은 사실 제 바로 옆에 있는 제 벽에 걸려 있는 아주 멋진 커닝 시트입니다.사용 가능한 모든 바인딩의 개요를 제공합니다.
템플릿 바인딩 마크업 확장에서TemplateBinding
컨트롤 템플릿의 속성 값을 템플릿 컨트롤에 있는 다른 노출된 속성 값과 연결합니다.즉, 템플릿의 바인딩 값을 위한 것입니다.
바인딩은 바인딩 대상과 데이터 원본의 속성을 연결합니다.
언급URL : https://stackoverflow.com/questions/10597492/what-is-the-template-binding-vs-binding
'bestsource' 카테고리의 다른 글
다차원 배열 [][] vs [,] (0) | 2023.05.24 |
---|---|
Azure SQL 데이터베이스 자동 확장 (0) | 2023.05.24 |
@selector() in Swift? (0) | 2023.05.24 |
각 2의 ngClass 내부 동적 클래스 이름 (0) | 2023.05.24 |
선택 결과를 삽입 스크립트로 변환하는 중 - SQL Server (0) | 2023.05.24 |