2011-10-04 3 views
5

사용자 정의 컨트롤 (Control에서 파생 됨)을 만들고 컨트롤의 기본 테마를 정의하려고합니다. 내가 만든 이전의 모든 사용자 지정 컨트롤은,이 assembly 속성DefaultStyleKey 설정에 대한 차이점

static IntegerUpDown() 
{ 
    DefaultStyleKeyProperty.OverrideMetadata(typeof(IntegerUpDown), 
    new FrameworkPropertyMetadata(typeof(IntegerUpDown))); 
} 

을 사용했다 :이 (나는 또한 일부 컨트롤에 나타났습니다한다)이다 할

[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, 
ResourceDictionaryLocation.SourceAssembly)] 

다른 방법 -

public IntegerUpDown() 
{ 
    DefaultStyleKey = typeof(IntegerUpDown); 
} 

나는이 두 접근법의 장단점을 알고 싶습니까?

답변

3

첫 번째 방법은 기본 스타일 키를 등록하도록 종속성 속성 프레임 워크에 요청합니다. 그것은 한 번만 (정적 생성자에 있음) 수행 한 다음 이후에 IntegerUpDown의 모든 인스턴스에 사용됩니다. 두 번째 방법은 IntegerUpDown의 인스턴스가 자체적으로 만들어 질 때 Key를 명시 적으로 할당합니다. 그들은 둘 다 나에게 좋아 보인다. MSDN 말한다

...

서브 완전히 속성의 메타 데이터를 오버라이드하여 DP 조정할 대신 할 수 있도록 다시 구현 속성 자체 메타 데이터를 재정의 할 수

.

관련 문제