Ich habe verschiedene Stilelemente in meinem WPF XAML, die die gleichen, außer für die Datenbindungseigenschaft sind zB:Konsolidieren gemeinsamer WPF Styles
<Style x:Key="HasAlphaStyle" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=HasAlpha, UpdateSourceTrigger=PropertyChanged}" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=HasAlpha, UpdateSourceTrigger=PropertyChanged}" Value="False">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Normal"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="HasBetaStyle" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=HasBeta, UpdateSourceTrigger=PropertyChanged}" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=HasBeta, UpdateSourceTrigger=PropertyChanged}" Value="False">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Normal"/>
</DataTrigger>
</Style.Triggers>
</Style>
Der Stil mit einem Kontroll angewandt wird:
<TextBlock Style="{StaticResource HasAlphaStyle}" .../>
Gibt es eine Möglichkeit, dass ich meinen HasAlphaStyle und HasBetaStyle konsolidieren kann, damit die Property Setter nicht dupliziert werden müssen? Der einzige Unterschied zwischen den beiden ist der Bindungspfad zur Eigenschaft.
Interessante Frage zu schreiben, ist die Zweck der Konsolidierung, so dass Sie nur einen Satz von Werten für die Setter beibehalten können? Möchten Sie dies nur auf TextBlocks oder ein beliebiges FrameworkElement anwenden können? – Dutts
1. Ja; 2. Eine Menge von Setter, die für jedes FrameworkElement wiederholt verwendet werden könnten –