Antworten:
Das von StyleIhnen erstellte ControlElement ist nur ein Targeting und keine Elemente, von denen es abgeleitet ist Control. Wenn Sie das nicht einstellen, wird x:Keyes 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 TargetTypevon 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 Buttonszum 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}"/>
FrameworkElementnicht auf alle meine Steuerelemente angewendet wurde - dies beantwortete diese Frage!