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 Stylevocê criou é apenas direcionado Controle não elementos derivados de Control. Quando você não define o, x:Keyele 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 Styleque visa todos os elementos que derivam de TargetTypede 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, Buttonspor 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}"/>
FrameworkElementnão estava sendo aplicado a todos os meus controles - isso respondeu a essa pergunta!