Built-in WPF IValueConverters

WpfConverters

Wpf Problem Overview


Ok, it was a nice surprise (after writing it several times) to find that there already is a BooleanToVisibilityConverter in System.Windows.Controls namespace.

Probably there are more such hidden time-savers.

Anyone got some?

Wpf Solutions


Solution 1 - Wpf

I did a quick trawl using the Object Browser and this is what I have.

Derived from IValueConverter:

> System.Windows.Controls.AlternationConverter
> System.Windows.Controls.BooleanToVisibilityConverter
> System.Windows.Documents.ZoomPercentageConverter
> System.Windows.Navigation.JournalEntryListConverter
> > Xceed.Wpf.DataGrid.Converters.CurrencyConverter
> Xceed.Wpf.DataGrid.Converters.DateTimeToStringConverter
> Xceed.Wpf.DataGrid.Converters.GreaterThanZeroConverter
> Xceed.Wpf.DataGrid.Converters.IndexToOddConverter
> Xceed.Wpf.DataGrid.Converters.IntAdditionConverter
> Xceed.Wpf.DataGrid.Converters.InverseBooleanConverter
> Xceed.Wpf.DataGrid.Converters.LevelToOpacityConverter
> Xceed.Wpf.DataGrid.Converters.MultimodalResultConverter
> Xceed.Wpf.DataGrid.Converters.NegativeDoubleConverter
> Xceed.Wpf.DataGrid.Converters.NullToBooleanConverter
> Xceed.Wpf.DataGrid.Converters.SourceDataConverter
> Xceed.Wpf.DataGrid.Converters.StringFormatConverter
> Xceed.Wpf.DataGrid.Converters.ThicknessConverter
> Xceed.Wpf.DataGrid.Converters.TypeToBooleanConverter
> Xceed.Wpf.DataGrid.Converters.TypeToVisibilityConverter
> Xceed.Wpf.DataGrid.Converters.ValueToMaskedTextConverter

Derived from IMultiValueConverter:

> System.Windows.Controls.BorderGapMaskConverter
> System.Windows.Navigation.JournalEntryUnifiedViewConverter
> System.Windows.Controls.MenuScrollingVisibilityConverter
> > Microsoft.Windows.Themes.ProgressBarBrushConverter
> Microsoft.Windows.Themes.ProgressBarHighlightConverter

Note the Xceed ones (no connection) are available free with their DataGrid. As well as those there's some clever stuff around like the debugging converter. I've also used the last IValueConverter and I'm sure there's some further lambda function goodness to be found, too.

Solution 2 - Wpf

Before 3.5 SP1, an IValueConverter was required for string formatting. Now, you can use the StringFormat property on Binding to do this.

From the MSDN page:

<DataTemplate>
  <TextBlock>
    <TextBlock.Text>
      <MultiBinding  StringFormat="{}{0} -- Now only {1:C}!">
        <Binding Path="Description"/>
        <Binding Path="Price"/>
      </MultiBinding>
    </TextBlock.Text>
  </TextBlock>
</DataTemplate>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questioncz_dlView Question on Stackoverflow
Solution 1 - WpfMrTellyView Answer on Stackoverflow
Solution 2 - WpfRobert MacneeView Answer on Stackoverflow