2010-03-12 8 views
1

나는 그래서 내 응용 프로그램의 모든 텍스트 블록이 그 색상을 가정해야 다음WPF 메뉴 항목의 스타일

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="Background" Value="{DynamicResource windowTextBackColor}"/> 
    <Setter Property="Foreground" Value="{DynamicResource windowsTextForeColor}"/> 
</Style> 

의 응용 프로그램 자원을 가지고있다.

그러나 메인 윈도우의 메뉴 및 메뉴 항목에 포함 된 색상은이 색상을 사용하지 않습니까? 작동하지 않는 텍스트 블록을 대상으로 스타일을 설정하는 이유

내가 그 색상을 가정의 XAML

를해야하는 이유가 있나요?

덕분에

+2

일부 질문에 대답으로 표시하는 것이 좋습니다. 그것은 지역 사회를 촉진하고 사람들은 당신을 도우 려합니다. –

답변

1

난 당신이 별도로 메뉴와 메뉴 아이템의 스타일을 가지고 생각합니다. A MenuItemHeaderedContentControl이고 Header 속성은 TextBlock이 아니지만 object이므로 TextBlock 스타일에 영향을받지 않습니다.

해당 스타일을 TextBlock 대신 Control으로 변경해보십시오. (컨트롤은 ForegroundBackground이 정의되어 있습니다.) 제대로 작동하는지는 확실하게 말할 수 없지만, 그렇다면 모든 컨트롤 (TextBlocks, MenuItems, Button ...)에 해당 배경과 전경 그림 물감.

또한 BasedOn을 사용하여 스타일을 "상속"할 수 있습니다. 그렇지 않은 경우 계층 구조에서 더 멀리 정의 된 스타일은 계층 구조에서 더 낮은 스타일로 정의 된 컨트롤에 영향을주지 않습니다. 기본적으로 하위 마스크는 BasedOn을 사용하지 않는 이상 상위 마스크를가립니다. 다음과 같이 사용하십시오.

BasedOn="{StaticResource {x:Type <your type here>}}" 
+0

예 ..'Header' 속성이'object'이므로'HeaderTemplate'도'TextBlock'을 포함하도록 시도 할 수 있습니다 – mg007

관련 문제