Ich beginne diese Frage, indem ich sage, dass ich nicht viel Erfahrung mit WPF habe, da ich gerade angefangen habe es zu benutzen (Alle meine bisherigen C# -Erfahrung ist mit Windows Forms und ASP.net).WPF Generischer Stil, der von anderen Styles vererbt werden kann
Lassen Sie uns sagen, dass ich in meinem App.xaml definiert zwei Arten, eine, die eine blaue Taste und eine definiert, die einen roten Knopf definiert:
<Style x:Key="BlueButton" TargetType="Button">
<Setter Property="Foreground" Value="White" />
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF50D0FF"/>
<GradientStop Color="#FF0092C8" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border CornerRadius="2" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF0092C8"/>
<GradientStop Color="#FF50D0FF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="RedButton" TargetType="Button">
<Setter Property="Foreground" Value="White" />
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFAE00" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border CornerRadius="2" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="#FFFFAE00" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
Wie kann ich diese beiden Stile verschmelzen, um eine allgemeine zu machen Stil, der "beides" enthält?
EDIT:
Dmitriy Polyanskiy Antwort funktioniert, aber ich habe noch jede Eigenschaft jedes Mal, wenn ich einen neuen Stil erstellen möchten einzustellen. Gibt es eine Möglichkeit, so etwas zu tun: <Style x:Key="RedButton" TargetType="Button" BasedOn="{StaticResource BaseButtonStyle}" Color1="#FFFFAE00" Color2="Red" />
oder
<Style x:Key="RedButton" TargetType="Button" BasedOn="{StaticResource BaseButtonStyle}">
<Setter Property="Color1" Value="#FFFFAE00" />
<Setter Property="Color2" Value="Red" />
</Style>
und dann haben die beiden Verlaufsfarben automatisch eingestellt?
Was meinst du mit zwei Stil verschmelzen? Wie kann man einen Knopf haben, der sowohl blau als auch rot ist? – Nitin
Ich meinte etwas wie einen allgemeinen Stil, so dass ich, wenn ich einen grünen Knopf hinzufügen möchte, es tun kann, ohne alles wieder schreiben zu müssen. – user3807877
Ich denke, Sie suchen nach ['BasedOn'] (https://msdn.microsoft.com/en-us/library/system.windows.style.basedon%28v=vs.110%29.aspx) – Default