2012-04-30 4 views
4

우리는 스타일의 기본 부분 만 변경해야하는 TextBox의 사용자 정의 하위 클래스를 작성하고 있습니다. 당신이 Control를 서브 클래스 때 지금 우리가 알고있는, 일반적으로 당신은어떻게하면 기본 컨트롤의 스타일을 기반으로 스타일을 설정할 수 있습니까?

public class EnhancedTextBox : TextBox 
{ 
    static EnhancedTextBox() 
    { 
     // Commenting this line out lets this use the default TextBox style. 
     DefaultStyleKeyProperty.OverrideMetadata(
      typeof(EnhancedTextBox), 
      new FrameworkPropertyMetadata(typeof(EnhancedTextBox))); 
    } 
} 

이것은 더 이상 얻을 의미 유형 자체로 서브 클래스 유형에 사용되는 키를 변경 ...이 같은 메타 데이터를 변경하는 거 야 기본 TextBox 스타일 더 큰 것은 아닙니다 ... 우리는 그 라인을 주석 처리하고 키가 여전히 TextBox에서 직접 사용되는 값으로 설정 되었기 때문에 다시 작동합니다. 우리가 이 스타일로 몇 가지를 변경하려는 않은 경우

, 우리는 궁금하지만, 전체가 아닌 스타일, 우리는 단순히 새로운 스타일을 만들 수 있고 그 BasedOn 속성을 설정 ...하지만 우리는 무엇을 할 거기에? 우리는 XAML을 수동으로 뽑아 내고 새로운 스타일을 만들어서 키를주고 StaticResource를 사용하고 싶지는 않지만 'TextBox를 기반으로합니다'라고 말할 수있는 설정을 찾지 못했습니다. 스타일.

나는 그 무엇인가 간단하지만 다시는 찾지 못할 것이라고 기대하고 있습니다. 누구든지 도와 줄 수 있습니까?

답변

5

그리고 그걸 찾았습니다. 찾았습니다. 이 남자는 나 자신이 차고 있다는 것을 분명히 알았다. 나는 그것을 놓쳤다.

<Style TargetType="{x:Type local:EnhancedTextBox}" 
    BasedOn="{StaticResource {x:Type TextBox}}"> 

    .... 

</Style> 

는 ... 여기 발견 WPF style basedon current