programing

ContentControl과 ContentPresenter의 차이점은 무엇입니까?

muds 2023. 4. 11. 22:39
반응형

ContentControl과 ContentPresenter의 차이점은 무엇입니까?

언제 사용해야 할지 모르겠어요.ContentPresenter대신ContentControl(및 그 반대).지금 이 순간은ContentControl거의 항상 내 안에서DataTemplates. 언제?ContentPresenter더 나은 선택일까요?그리고 왜?

ContentControl다른 요소를 포함하고 있는 컨트롤의 기본 클래스입니다.Content-syslog(예를 들어,Button).

ContentPresenter는 제어 템플릿 내에서 내용을 표시하기 위해 사용됩니다.

ContentControl직접 사용하는 경우(기본 클래스로 사용되어야 함)에는 ContentPresenter를 사용하여 콘텐츠를 표시하는 컨트롤 템플릿이 있습니다.

나의 경험칙(모든 경우에 적용되는 것은 아닙니다. 당신의 판단을 이용하십시오.)

  1. 안에서.ControlTemplate사용하다ContentPresenter
  2. 외부ControlTemplate(포함)DataTemplate및 외부 템플릿)을 사용하지 않도록 합니다.필요한 경우,ContentPresenter
  3. 서브클래스ContentControl사용자 정의 "외관 없는" 컨트롤을 만들 때 기존 컨트롤의 템플릿을 변경해도 동일한 결과를 얻을 수 없는 경우(매우 드물 수 있음).

ContentPresenter는 보통 ControlTemplate에서 "실제 콘텐츠를 여기에 저장"하기 위한 플레이스 홀더로 사용됩니다.

Content Control은 템플릿 내에서만 사용할 수 있는 것이 아니라 어디서나 사용할 수 있습니다.할당된 콘텐츠 유형에 대해 정의된 DataTemplate를 선택합니다.

저는 최근 블로그에 이 두 가지 컨트롤에 관한 글을 올렸습니다.

Content Presenter vs Content Control

ContentPresenter.Content Source는 두 클래스의 가장 큰 차이를 만드는 요소입니다.ContentSource 속성은 ControlTemplate 내에서만 의미가 있습니다. ContentSource 속성은 콘텐츠를 매핑해야 하는 TemplateParent 속성을 결정합니다.예를 들어 컨트롤에 종속성 속성이 포함된 경우MyProperty1, 그러면 그 안에서 다음 항목을 찾을 수 있습니다.ControlTemplate:

<ControlTemplate TargetType="MyControl" >
    [...]
       <ContentPresenter ContentSource="MyProperty1" />
    [...]
</ControlTemplate>

ContentPresenter의 콘텐츠는 다음 값을 받습니다.MyProperty1.

자산의 이름이 다음과 같은 경우Content, 를 지정할 필요가 없습니다.ContentSource디폴트값이기 때문입니다.

angularJs를 아는 사람들에게 이것은 메카니즘을 초월하는 것과 유사하다.

오래된 질문이지만, 범용 앱용 템플릿인 애니메이션 타일 컨트롤 개발을 막 끝낸 참이었다.이 코드는 이전 Phone WP7/8 SDK에서 볼 수 있다.

<ContentControl x:Name="contentControl" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch">
    <ContentPresenter x:Name="contentPresenter" CacheMode="BitmapCache"/>
</ContentControl>

내용 관리: 컨테이너:만, ControlTemplate에 는,ControlTemplate 컨테이너를 수 다른 ContentControl에서, 그 , 다른 내용을 나타내기 위해서.ContentPresenter하지 않은 , "용기"를 ControlTemplate ★★★★★★★★★★★★★★★★★」ControlPresenters적어도 WP7/8 SDK를 개발할 때 마이크로소프트의 남자들이 했던 것처럼 콘텐츠 블록을 표시하는 것.Content Control은 콘텐츠 표시에도 사용할 수 있지만 컨테이너와 프레젠터 역할을 모두 수행합니다.용기의 존재동적 샘플에서는 컨테이너를 표시하고(배경이 비어 있거나 아직 표시되지 않은 것이 있을 수 있음) 프레젠터 콘텐츠로 동적으로 채울 수 있습니다.컨테이너에는 치수(폭, 높이 등)가 있으며, 컨테이너 컨트롤에 해당 속성을 배치하고 컨테이너에 내용을 표시합니다.이 예에서는 ContentControl이 발표자의 콘텐츠에 대해 수행해야 할 작업을 결정합니다.

때로는 예가 이론적인 전문용어보다 쉽다.MS 웹 사이트(아래로 스크롤:http://msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter(v=vs.110).aspx),)에서는 버튼을 예로 사용합니다.버튼에는 하나의 컨트롤 또는 이미지, 텍스트, CheckBox, 스택 패널, 그리드 등의 커스텀 컨트롤을 배치할 수 있는 ContentControl이 있습니다.

버튼을 커스터마이즈한 후 Xaml에서 다음을 쓸 수 있습니다.

<my:Button>
   <my:Button.Content>
      <my:AnotherControl>
   </my:Button.Content>
</my:Button>

위의 코드 예에서는 "my:Button.Content"는 ContentControl입니다.AnotherControl은 지정한 ContentPresenter 위치에 배치됩니다.

마찬가지로 TextBox와 TextBlock을 비교하면 TextBox에는 위의 Button 예시와 같이 ContentPresenter를 넣을 수 있지만 TextBlock에는 넣을 수 없습니다.TextBlock에서는 텍스트를 입력할 수 밖에 없습니다.

언급URL : https://stackoverflow.com/questions/1287995/whats-the-difference-between-contentcontrol-and-contentpresenter

반응형