2011-02-25 4 views
0

안녕하세요, ListView에서 상속하는 WPF를 사용자 지정 컨트롤을 만들고 있습니다. 그러나, 나는 그것이 이미 기존의 ListView와 똑같이 보이길 원한다.WPF : ControlTemplate을 다시 작성하지 않고 사용자 지정 컨트롤 만들기

기본 ListView 템플릿을 xaml에서 다시 작성하지 않고 사용자 지정 컨트롤에서 사용하려면 방법이 있습니까? 새 컨트롤이 추가 된 Generic.xaml 파일이 있지만 템플릿 코드를 다시 작성할 필요가 없습니다.

감사

편집 : 나는 또한 (엉망 만들기) 코드를 반복하지 않고 가능한 한 건조를 유지하고 싶다.

답변

4

ListView를 하위 클래스로 만들면 서브 클래 싱 된 컨트롤에서 ListView 템플릿이 사용됩니다. 그게 다야! 아무 것도 할 필요가 없습니다!

컨트롤에 사용되는 템플릿은 DefaultStyleKey 종속성 속성에 의해 정의됩니다. 당신이 당신의 컨트롤의 템플릿을 변경하려면 다음과 같이이 속성을 설정 :

DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), 
    new FrameworkPropertyMetadata(typeof(MyControl))); 

을하지만,이 속성을 설정하지 않으면, 그것은 슈퍼 클래스로 설정 한 값을 사용합니다.

"새 항목 추가"=> "사용자 정의 컨트롤"을 사용하여 컨트롤을 만든 다음 확장 한 클래스를 변경 한 것이 문제라고 생각합니다. 이 작업을 수행하는 대신 새 C# 클래스를 추가하고 ListView를 확장하면됩니다.

+0

달콤한! 고맙다 ColinE –

1
<Style TargetType="{x:Type local:MyControl}" BasedOn={StaticResource {x:Type ListView}}" /> 
관련 문제