J'ai fait quelques recherches sur ce sujet, mais je n'ai pas réussi à savoir comment réutiliser le déclencheur de style.Reusing style trigger dans wpf
J'ai le déclencheur de style défini sur Label et j'utilise Data trigger pour définir le contenu. J'ai plusieurs étiquettes dans la même vue et également dans une vue différente. Les données liées sont du même type sauf sa propriété différente du même contexte de données.
Pensez à suivre 2 étiquettes différentes où j'ai besoin d'afficher les performances de 2 personnes - PersonA et PersonB. La valeur affichée pour les deux étiquettes sera basée sur le format de performance sélectionné.
<Label Grid.Row="5" Grid.Column="9"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
<Label.Style>
<Style BasedOn="{StaticResource SomeGlobalStaticStyle}" TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="Fractional">
<Setter Property="Content" Value="{Binding DataModel.PersonA.Performance.Value.Fractional}" />
</DataTrigger>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="Decimal">
<Setter Property="Content" Value="{Binding DataModel.PersonA.Performance.Value.Decimal}" />
</DataTrigger>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="US">
<Setter Property="Content" Value="{DataModel.PersonA.Performance.Value.US}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
<Label Grid.Row="6" Grid.Column="9"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
<Label.Style>
<Style BasedOn="{StaticResource SomeGlobalStaticStyle}" TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="Fractional">
<Setter Property="Content" Value="{Binding DataModel.PersonB.Performance.Value.Fractional}" />
</DataTrigger>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="Decimal">
<Setter Property="Content" Value="{Binding DataModel.PersonB.Performance.Value.Decimal}" />
</DataTrigger>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="US">
<Setter Property="Content" Value="{DataModel.PersonB.Performance.Value.US}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
Si vous voyez, la seule différence est le premier déclencheur prend PERSONA et le second déclencheur prend PersonB. J'ai 10 occurrences d'une telle étiquette réparties dans des vues identiques et multiples. Est-il possible que je puisse définir ce déclencheur une fois dans les ressources et lier toutes les données que je veux à partir de chaque étiquette.
Dans l'attente de la solution.
Cordialement,
Abdyax
Probablement préférable d'utiliser un style explicite plutôt qu'implicite, car il peut y avoir beaucoup d'étiquettes sans rapport là-bas, et vous ne voulez pas remplacer leur contenu. Sinon, une solution parfaitement cromante. –
Fonctionne comme le charme. Merci! – Abdyax