Ho risolto questo problema scrivendo un multiconvertitore generico che può prendere espressioni e valutarle, poiché è una multibinding, aggiornerà il valore ogni volta che una delle fonti viene aggiornata, significa anche che raramente devo scrivere nuovi convertitori a tutti. L'unica spesa è la verbosità xaml. Un esempio di un'espressione:
<CheckBox Content="{Binding Role.Name_SV}">
<CheckBox.Background>
<MultiBinding Converter="{StaticResource ArithmeticsConverter}">
<Binding Source="?"/>
<Binding Source=">="/>
<Binding Path="Included"/>
<Binding Path="Requirement"/>
<Binding>
<Binding.Source>
<SolidColorBrush>LightGreen</SolidColorBrush>
</Binding.Source>
</Binding>
<Binding>
<Binding.Source>
<SolidColorBrush>Red</SolidColorBrush>
</Binding.Source>
</Binding>
</MultiBinding>
</CheckBox.Background>
</CheckBox>
La funzione qui è che il colore di sfondo della casella di controllo è LightGreen se Incluso > = Requisito e Rosso altrimenti.
Credo che alcune persone lo trovino orribilmente brutto, ma mi piace piuttosto come mi permette di descrivere ciò che voglio senza dovermi preoccupare di quando le cose vengono aggiornate, è più dichiarativo e meno imperativo.
Se qualcuno è interessato posso pubblicare il codice sorgente per il convertitore.