Puis-je spécifier un style qui s'applique à tous les éléments? j'ai essayé
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
Mais ça n'a rien fait
Réponses:
Le que Style
vous avez créé est uniquement un ciblage Control
et non des éléments qui dérivent Control
. Lorsque vous ne définissez pas le, x:Key
il est implicitement défini sur le TargetType
, donc dans votre cas x:Key="{x:Type Control}"
.
Il n'y a aucun moyen direct de spécifier un Style
qui cible tous les éléments qui dérivent TargetType
de laStyle
. Vous avez d'autres options.
Si vous avez les éléments suivants Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
Vous pouvez tout cibler Buttons
par exemple
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
ou utilisez le style directement sur n'importe quel élément, par exemple Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
Comme Fredrik Hedblad a répondu, vous pouvez affecter tous les éléments hérités du contrôle.
Mais vous ne pouvez pas appliquer de style pour le bloc de texte et le bouton avec le même style par exemple.
pour faire ça:
<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'était pas appliqué à tous mes contrôles - cela a répondu à cette question!