2012-02-03 3 views
0

나는 내 WPF 내가사용자 정의 스타일에서 값의 설정을 해제 하시겠습니까?

<Window Foreground="Red"> 
    <TextBlock Text="Hello World" /> 
</Window> 

이 TextBlocks에 대한 잘 작동하지만 나는 버튼을 추가 할 경우, 글꼴 이후, 검은 색이 유지처럼 메인 창에 전경을 설정하여 텍스트 색상을 변경하려면 응용 프로그램 버튼에는 기본 스타일의 전경색에 대한 설정자가 있습니다. 원래의 스타일을 기반으로 Button의 새로운 기본 스타일을 만들 수 있지만 Foregound 설정 도구를 제거 할 수 있습니까?

답변

2

아직 테스트하지는 않았지만 적절한 리소스 컬렉션 (예 : App.xaml의 응용 프로그램 수준)에서 기본 스타일을 사용하여이 스타일을 기반으로 각 컨트롤 유형에 대한 암시 적 스타일을 만들 수 있습니다 기본 스타일.

<Style TargetType="{x:Type Control}" x:Key="DefaultControlStyle"> 
    <Setter Property="Foreground" Value="Red" /> 
</Style> 
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource DefaultControlStyle}" /> 
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource DefaultControlStyle}" />   
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource DefaultControlStyle}" /> 
<Style TargetType="{x:Type ListView}" BasedOn="{StaticResource DefaultControlStyle}" /> 

는 또한 바인딩 트릭 here 설명 상대 소스를 사용할 수 있습니다.

+0

이 방법을 사용하면 트리거를 기반으로 일부 UI 부분의 전경색을 변경하는 것이 조금 더 어려워집니다 (몇 가지 오류를 나타내야하는 ContentPresenter가 있고 여러 자식 요소가 포함되어 있고 전경색을 빨간색으로 설정하려는 경우 ContentPresenters 상위에있는 트리거를 기반으로 한 전체 콘텐츠). – Jens

+0

방금 ​​비슷한 접근법을 발견했습니다. 이들 중 어느 것이 좋을 지 모르겠습니다. http://stackoverflow.com/questions/5327819/wpf-setting-foreground-color-of-entire-form – devdigital

+0

Pavlo Glazkov의 대답은 매우 잘 작동합니다. 감사합니다! 답변을 수락 할 수 있도록 편집 하시겠습니까? 아니면 내 답변을 게시해야합니까? – Jens

관련 문제