2014-04-22 1 views
0

에서 현지 스타일의 최우선 전역 스타일 나는 글로벌 스타일과 동일한 제어

<Style TargetType="{x:Type MenuItem}"> 
    . 
    . 
    . 
</Style> 

은 사용자 제어

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="../DefaultTheme.xaml" /> 
</ResourceDictionary.MergedDictionaries> 
에 병합 된 정보 파일 DefaultTheme.xaml이 같은 TypeMenu 항목에 대해 선언 된 전역 스타일을 가지고

사용자 정의 컨트롤 이제 TargetType="{x:Type MenuItem}"에 대한 스타일을 선언하면 전역 스타일에서 선언 한 스타일을 상속받습니다.

예.

<Style x:Key="LocalStyle" TargetType="{x:Type MenuItem}"> 
    . 
    . 
    . 
</Style> 

이렇게해도 글로벌 스타일이 적용됩니다. 나는이 지역 스타일이 글로벌 스타일을 계승하기를 원하지 않는다. 그래서 내 제어에 <Style TargetType="{x:Type MenuItem}">..</Style> 부여하여이 재정의 할 수 있습니다.

여기에 catch가 있습니다. 이렇게하면 로컬로 재정의했기 때문에 컨트롤의 다른 위치에 전역 스타일을 적용 할 수 없습니다. 어떻게 처리해야합니까?

답변

0

Style Inheritance을 기반으로하면 내레이션이 거꾸로됩니다. 로컬 스타일은베이스에서 상속되지 않으므로 기본 스타일은 로컬에 적용되지 않습니다.

If I do this i will not be able to apply the global style to other places in the control because I have locally overridden this

이 발생하지 않습니다, 로컬 스타일이 키를 선언하고 키가 참조하는 MenuItem에 적용되는 것이기 때문에. 나머지는 모두 글로벌 스타일로 적용됩니다.

관련 문제