모든 컨트롤을 대상으로 지정하는 방법 (WPF 스타일)


90

모든 요소에 적용되는 스타일을 지정할 수 있습니까? 나는 시도했다

<Style TargetType="Control">
    <Setter Property="Margin" Value="0,5" />
</Style>

하지만 아무것도하지 않았다

답변:


120

Style만 목표로 만들어 Control에서 파생 요소를하지 Control. 를 설정하지 않으면 x:Key암시 적으로 설정 TargetType되므로 귀하의 경우 x:Key="{x:Type Control}".

을 지정하는 직접적인 방법이 없다 Style으로부터 파생 모든 요소 대상 TargetType의는 Style. 다른 옵션이 있습니다.

다음이있는 경우 Style

<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
    <Setter Property="Margin" Value="50" />
</Style>

Buttons예를 들어 모두 타겟팅 할 수 있습니다.

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>

또는 요소에 직접 스타일을 사용하십시오. Button

<Button Style="{StaticResource ControlBaseStyle}" ...>

대상 유형이 인 내 스타일이 FrameworkElement모든 컨트롤에 적용되지 않는 이유가 궁금합니다 .
qJake

4
내가 창에 배치 된 모든 유형의 컨트롤에 대해 스타일을 지정해야한다는 것이 정말 엉터리인가요?
Ondřej

7

Fredrik Hedblad가 대답했듯이 제어에서 상속 된 모든 요소에 영향을 줄 수 있습니다.

하지만 예를 들어 같은 스타일의 텍스트 블록과 버튼에는 스타일을 적용 할 수 없습니다.

하기 위해서:

    <Style x:Key="DefaultStyle" TargetType="{x:Type FrameworkElement}">
        <Setter Property="Control.Margin" Value="50"/>
    </Style>
    <Style TargetType="TextBlock" BasedOn="{StaticResource DefaultStyle}"/>
    <Style TargetType="Button" BasedOn="{StaticResource DefaultStyle}"/>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.