모든 요소에 적용되는 스타일을 지정할 수 있습니까? 나는 시도했다
<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}"/>
FrameworkElement
모든 컨트롤에 적용되지 않는 이유가 궁금합니다 .