Posso specificare uno stile che si applica a tutti gli elementi? Provai
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
Ma non ha fatto niente
Risposte:
Quello che Style
hai creato è solo targeting Control
e non elementi che derivano da Control
. Quando non imposti x:Key
, è implicitamente impostato su TargetType
, quindi nel tuo caso x:Key="{x:Type Control}"
.
Non esiste un modo diretto per specificare a Style
che targetizza tutti gli elementi che derivano da TargetType
di Style
. Hai altre opzioni.
Se hai il seguente Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
È possibile indirizzare tutti Buttons
ad esempio
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
oppure usa lo stile direttamente su qualsiasi elemento, ad es Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
Come ha risposto Fredrik Hedblad, puoi influenzare tutti gli elementi che hanno ereditato dal controllo.
Ma non puoi applicare lo stile per il blocco di testo e il pulsante con lo stesso stile, ad esempio.
fare quello:
<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
non fosse applicato a tutti i miei controlli: questo ha risposto a questa domanda!