2010-01-09 3 views
14

일부 특수 작업에 대해 CheckBox 컨트롤을 너무 많이 사용하는 WPF 프로젝트에서 작업하고 있습니다. 그것은 올바르게 작동하고 있습니다.컨트롤 템플릿 상속하는 방법

내 문제는 테마 (코드 플렉스의 shinyred.xaml)에서 적용된 ControlTemplate이 내 권한없는 컨트롤에 적용되지 않는다는 것입니다. 새 컨트롤에서 사용하기 위해 CheckBoxControlTemplate을 상속하는 방법이 있습니까?

찾을 수있는 모든 샘플은 CheckBox에 대한 스타일 상속에 초점을 맞추고 있지만 ControlTemplate에 대해서는 아무것도 제공하지 않습니다.

답변

17

아니요, 당신이 말한대로 BasedOn 속성을 사용하여 스타일을 '상속'할 수는 있지만 직접 템플릿을 상속하는 것은 불가능합니다. 이것은 이해할 수 있지만, 템플릿 상속의 의미는 무엇입니까? 어떻게 파생 된 템플릿을 기본 템플릿의 요소를 어떻게 추가하거나 변경할 수 있습니까?

스타일을 사용하면 Setters, Triggers 등을 간단히 추가 할 수 있기 때문에 전적으로 가능합니다. 템플릿 상속을 사용할 수있는 유일한 방법은 Triggers을 기본 템플릿에 추가하는 것입니다. 그러나이 경우 기본 템플릿의 요소 이름에 대한 자세한 지식이 있어야하며 기본 템플릿의 요소 이름을 변경하면 파생 된 요소가 손상 될 수 있습니다. 가독성 문제는 말할 것도없고 어디에서 파생 된 템플릿의 이름을 참조 할 수 있습니다.

덧붙여진 추가 귀하의 특정 문제를 해결할 수 있습니다 (그러나 지금까지는 귀하 또는 여전히 문제는 의심 스럽지만). 따라서 Template 속성에 대한 설정 자로 컨트롤 스타일을 정의하면됩니다.

<Style TargetType="<your type>"> 
    <Setter Property="Template" Value="{StaticResource <existing template resource name>}"/> 
</Style> 
관련 문제