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

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

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

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



답변

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}" ...>


답변

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}"/>


답변