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?
I did a quick trawl using the Object Browser and this is what I have.
Derived from IValueConverter:
System.Windows.Controls.AlternationConverterSystem.Windows.Controls.BooleanToVisibilityConverterSystem.Windows.Documents.ZoomPercentageConverterSystem.Windows.Navigation.JournalEntryListConverter
Xceed.Wpf.DataGrid.Converters.CurrencyConverterXceed.Wpf.DataGrid.Converters.DateTimeToStringConverterXceed.Wpf.DataGrid.Converters.GreaterThanZeroConverterXceed.Wpf.DataGrid.Converters.IndexToOddConverterXceed.Wpf.DataGrid.Converters.IntAdditionConverterXceed.Wpf.DataGrid.Converters.InverseBooleanConverterXceed.Wpf.DataGrid.Converters.LevelToOpacityConverterXceed.Wpf.DataGrid.Converters.MultimodalResultConverterXceed.Wpf.DataGrid.Converters.NegativeDoubleConverterXceed.Wpf.DataGrid.Converters.NullToBooleanConverterXceed.Wpf.DataGrid.Converters.SourceDataConverterXceed.Wpf.DataGrid.Converters.StringFormatConverterXceed.Wpf.DataGrid.Converters.ThicknessConverterXceed.Wpf.DataGrid.Converters.TypeToBooleanConverterXceed.Wpf.DataGrid.Converters.TypeToVisibilityConverterXceed.Wpf.DataGrid.Converters.ValueToMaskedTextConverter
Derived from IMultiValueConverter:
System.Windows.Controls.BorderGapMaskConverterSystem.Windows.Navigation.JournalEntryUnifiedViewConverterSystem.Windows.Controls.MenuScrollingVisibilityConverter
Microsoft.Windows.Themes.ProgressBarBrushConverterMicrosoft.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.
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>
来源:https://stackoverflow.com/questions/505397/built-in-wpf-ivalueconverters