2016-08-08 31 views
3

In einem WinRT/UWP app (das Problem auf beiden Plattformen auftritt), ich einen Stil definieren, die für alle Instanzen einer bestimmten Kontrolle gilt, durch Weglassen des x:Key Attributs, zB:Stilvererbung - wie wird ein benutzerdefinierter Standardstil verfeinert?

<Style TargetType="Button"> 
    <Setter Property="Width" Value="400"/> 
</Style> 

Nun, ich d‘auf einige Tasten zusätzlich zu diesem Standardstil bestimmte Eigenschaften anwenden:

<Style TargetType="Button" x:Key="TallButtonStyle" BasedOn="..."> 
    <Setter Property="Height" Value="100"/> 
</Style> 

Das Problem ist: Was als BasedOn Attribut zu füllen, so dass dieser Stil erbt den Standardstil oben definiert?

In WPF, konnte ich folgendes tun:

<Style TargetType="Button" x:Key="..." BasedOn="{StaticResource {x:Type Button}}"> 

jedoch x:Type auf WinRT/UWP nicht verfügbar. Wie this answer schon sagt, ich brauche ein x:Key zum Standardstil zuweisen, um die Lage sein, von ihm zu erben:

<Style TargetType="Button" x:Key="WideButtonStyle"> 
    <Setter Property="Width" Value="400"/> 
</Style> 
<Style TargetType="Button" x:Key="TallButtonStyle" BasedOn="{StaticResource Button}"> 
    <Setter Property="Height" Value="100"/> 
</Style> 

jedoch in diesem Fall die WideButtonStyle nicht als Standard nicht mehr verwendet wird, und ich würde Ich muss Style="{StaticResource WideButtonStyle}" manuell auf alle meine Buttons anwenden, was für mich unnötigen Aufwand bedeutet.

Gibt es eine Möglichkeit, entweder

  1. Jahre Stil gesetzt BasedOn Attribut an die jeweiligen Steuer des Standardstil zu zeigen, oder
  2. einen Stil festgelegt, die ein x:Key Attribut enthält für alle als Standard verwendet werden sollte Kontrollen eines bestimmten Typs?

BTW, ist this related topic meine Frage nicht beantwortet, da es zeigt, wie der Standardstil in der WinRT/UWP Plattform, nicht ein maßgeschneiderter Standardstil definierte außer Kraft zu setzen.

Antwort

1

Sie können Ihrem Standardformat x:Key geben und dann einen leeren Stil ohne x:Key basierend auf diesem Stil erstellen. Dieser Stil wird auf alle Instanzen eines Steuerelements angewendet, ist jedoch im Grunde eine "Referenz" zum ersten Stil. Dann können Sie zusätzliche Stile basierend auf dem ersten Stil mit x:Key erstellen. Nicht wirklich eine elegante Lösung, aber ich denke, du kannst es nicht besser machen.