Antworten:
Das von Style
Ihnen erstellte Control
Element ist nur ein Targeting und keine Elemente, von denen es abgeleitet ist Control
. Wenn Sie das nicht einstellen, wird x:Key
es implizit auf das gesetzt TargetType
, also in Ihrem Fall x:Key="{x:Type Control}"
.
Es gibt keine direkte Möglichkeit, a anzugeben Style
, die auf alle Elemente abzielt, die TargetType
von der abgeleitet sind Style
. Sie haben einige andere Möglichkeiten.
Wenn Sie Folgendes haben Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
Sie können Buttons
zum Beispiel alle anvisieren
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
oder verwenden Sie den Stil direkt für ein Element, z Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
Wie Fredrik Hedblad antwortete, können Sie alle Elemente beeinflussen, die von der Kontrolle geerbt wurden.
Sie können jedoch keinen Stil für Textblock und Schaltfläche mit demselben Stil anwenden.
das zu tun:
<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
nicht auf alle meine Steuerelemente angewendet wurde - dies beantwortete diese Frage!