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>

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? "


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.



-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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.