Ho il seguente XAML utilizzato per visualizzare informazioni dettagliate su un elemento selezionato in una visualizzazione elenco. Voglio che il rettangolo mostri il colore delle informazioni standard dietro il testo tranne quando l'elemento selezionato rappresenta un messaggio di errore. Il codice qui sotto non funziona così com'è e mostra sempre il colore delle informazioni. Funziona perfettamente se non si specifica un valore Fill
per l'elemento radice <Rectangle />
.Come eseguire l'override di una proprietà associata a un DataTrigger
<Rectangle Fill="{DynamicResource {x:Static SystemColors.InfoBrushKey}}"
RadiusX="4" RadiusY="4">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentMessage.Severity"
Value="Error" >
<Setter Property="Fill" Value="#20FF0000" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
Il frammento non riflette, ma il codice vero e proprio ha un bel paio di livelli di stato possibili per la gravità in modo da non voler definire un trigger per ogni possibile severità. La logica che voglio è "Usa il colore delle informazioni a meno che la gravità non sia un errore, quindi usa il rosso".
Sono sicuro di aver frainteso alcuni aspetti fondamentali di WPF ma non riesco a individuarlo. Qualcuno può indicarmi la giusta direzione in modo tale che i trigger di dati che specificherò sostituiranno il valore Fill esistente quando le loro condizioni sono vere?
Sì, ha funzionato. Però ... puoi spiegare perché? Mi sembra che la proprietà Fill sul Rectangle sarebbe equivalente. –
Non posso, no. Questo è solo per esperienza. Immagino che averlo impostato sull'oggetto stesso sovrascriva qualsiasi cosa all'interno di uno stile. –