Wie erstelle ich einen Stil basierend auf dem Standardstil?

74

Wie erstelle ich einen Stil basierend auf dem Standardstil in Silverlight?

In WPF machen wir es zum Beispiel so:

<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
  <Setter Property="Margin" Value="2" />
  <Setter Property="Padding" Value="2" />
</Style>
ZuTa
quelle
26
Ich kam zu dieser Frage und suchte nach einer Antwort, wie man es in WPF macht :)
Lynn Crumbling

Antworten:

31

So ziemlich das selbe. Nur minus der x:Typemit expliziterer Benennung.

<Style TargetType="TextBox" BasedOn="{StaticResource DefaultTextBoxStyle}">

Weitere Informationen finden Sie hier in den Dokumenten . PS: Wenn Sie die Standardvorlagen benötigen, befindet sich TextBox normalerweise in CoreStyles.xaml

ADDENDUM wie in den Kommentaren angefordert, falls Sie beim ersten Lesen der Antwort verwirrt sind;

" Sie benötigen einen Basisstil , der wirklich einfach zu erstellen ist, da Sie ihn in einem Anwendungsthema ausführen sollen, wie es Silverlight standardmäßig bereitstellt (wpf / uwp usw. haben diese nicht), mit dem Dateien wie ToolkitStyles.xaml erstellt werden , SDKStyles.xaml, CoreStyles.xaml usw. Woher stammt der Name der statischen Ressource in der Antwort als Ziel für eine Silverlight-Version aus dem Jahr, in dem diese ursprünglich beantwortet wurde? "

Chris W.
quelle
2
aber wenn ich den Standardstil der benutzerdefinierten Steuerung (von mir entwickelt) erben möchte?
ZuTa
2
Nein, ich habe einen Standardstil für mein benutzerdefiniertes Steuerelement. Und ich möchte darauf einen neuen Stil aufbauen.
ZuTa
24
Ich verstehe nicht, warum dies als Antwort akzeptiert wurde. Es basiert eindeutig auf einem benannten Stil und nicht auf dem Standardstil (und dem unbenannten Stil).
Nestor
4
@ ChrisW. Nein, ich habe nur darauf hingewiesen, dass DefaultTextBoxStyle ein Name eines bestimmten Stils ist und es keine Lösung gibt , einen unbenannten, steuerelementbasierten Stil als Basis zu verwenden.
Nestor
2
Diese Antwort ist falsch. Es wird davon ausgegangen, dass es bereits einen benannten Stil gibt, auf dem der neue basiert.
Disklosr
21

Nur für Silverlight :

Um einen Stil basierend auf dem Standardstil zu erstellen, müssen Sie einen benannten Stil erstellen und dann den Standardstil basierend auf dem benannten Stil erstellen ( http://weblogs.asp.net/lduveau/silverlight-how-to-inherit-from) -an-impliziter-Stil )

<Style x:Key="DefaultCustomControlStyle" TargetType="local:CustomControl">
    <Setter Property="Padding" Value="2" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:CustomControl">
                <ContentPresenter />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style TargetType="local:CustomControl" BasedOn="{StaticResource DefaultCustomControlStyle}" />

Wenn Sie WPF verwenden, ist es viel einfacher, stattdessen den Code in der ursprünglichen Frage zu verwenden.

AJ Richardson
quelle
-3

Wenn ich das richtig verstehe, suchen Sie nach OverridesDefaultStyle

<Style TargetType="{x:Type TextBox}">
      <Setter Property="OverridesDefaultStyle" Value="False" />
      <Setter Property="Margin" Value="2" />
      <Setter Property="Padding" Value="2" />
</Style>
Ungouge
quelle