Posso especificar um estilo que se aplica a todos os elementos? eu tentei
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
Mas não fez nada
Respostas:
O que Style
você criou é apenas direcionado Control
e não elementos derivados de Control
. Quando você não define o, x:Key
ele está implicitamente definido como o TargetType
, então no seu caso x:Key="{x:Type Control}"
.
Não existe uma maneira direta de especificar um Style
que visa todos os elementos que derivam de TargetType
de Style
. Você tem algumas outras opções.
Se você tem o seguinte Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
Você pode segmentar todos, Buttons
por exemplo
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
ou use o estilo diretamente em qualquer elemento, por exemplo Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
Como Fredrik Hedblad respondeu, você pode afetar todos os elementos que herdaram do controle.
Mas você não pode aplicar estilo para bloco de texto e botão com o mesmo estilo, por exemplo.
fazer isso:
<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
não estava sendo aplicado a todos os meus controles - isso respondeu a essa pergunta!