bestsource

템플릿 바인딩과 바인딩은 무엇입니까?

bestsource 2023. 5. 24. 22:16
반응형

템플릿 바인딩과 바인딩은 무엇입니까?

나는 이해할 수 없었습니다.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참고로ButtonHeight이름을여기에 이미지 설명 입력 대지 않고

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

반응형