I'm looking for some advice on how to write my WPF value converters. The way I'm currently writing them, they are very specific, like (bool?,bool) => Brush, i.e. I'm writing each converter for a specific use case, in this case, the Brush is bound to an indicator showing equality information between the bool? and the bool. This obviously makes re-use very hard and I end up with a quite large list of converters. Should I strive to write my converters in a more general way? Can I? 
In WPF, should I base my converters on types or use-cases?
c#;wpf
I solved this problem by writing a general purpose multiconverter that can take expressions and evaluate them, since it's a multibinding, it will update the value whenever one of the sources is updated, it also means I rarely have to write new converters at all. The only expense is the xaml verbosity. One example of an expression:<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>The function here is that the checkbox background color is LightGreen if Included >= Requirement, and Red otherwise.I guess some people will find this horrifyingly ugly, but I rather like how it lets me describe what I want without having to worry about when things are updated, it's more declarative and less imperative. If anyone is interested I can post the source code for the converter. 