Хорошо, было приятным сюрпризом (после написания этого несколько раз) обнаружить, что уже существует BooleanToVisibilityConverter в System.Windows.Controls пространстве имен.
Вероятно, есть еще такие скрытые экономители времени.
Кто-нибудь есть?
Я сделал быстрый трал, используя Object Browser, и вот что у меня есть.
Получено из IValueConverter:
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
System.Windows.Controls.AlternationConverter System.Windows.Controls.BooleanToVisibilityConverter System.Windows.Documents.ZoomPercentageConverter System.Windows.Navigation.JournalEntryListConverter
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
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
Получено из IMultiValueConverter:
IMultiValueConverter
System.Windows.Controls.BorderGapMaskConverter System.Windows.Navigation.JournalEntryUnifiedViewConverter System.Windows.Controls.MenuScrollingVisibilityConverter Microsoft.Windows.Themes.ProgressBarBrushConverter Microsoft.Windows.Themes.ProgressBarHighlightConverter
System.Windows.Controls.BorderGapMaskConverter System.Windows.Navigation.JournalEntryUnifiedViewConverter System.Windows.Controls.MenuScrollingVisibilityConverter
System.Windows.Controls.BorderGapMaskConverter
System.Windows.Navigation.JournalEntryUnifiedViewConverter
System.Windows.Controls.MenuScrollingVisibilityConverter
Microsoft.Windows.Themes.ProgressBarBrushConverter Microsoft.Windows.Themes.ProgressBarHighlightConverter
Microsoft.Windows.Themes.ProgressBarBrushConverter
Microsoft.Windows.Themes.ProgressBarHighlightConverter
Обратите внимание, что Xceed (без подключения) доступны бесплатно с их DataGrid. Кроме того, есть такие умные вещи, как конвертер отладки . Я также использовал последний IValueConverter , и я уверен, что есть еще кое-что о лямбда-функциях.
До версии 3.5 SP1 для форматирования строки требовался IValueConverter. Теперь вы можете использовать свойство StringFormat в Binding, чтобы сделать это.
со страницы MSDN:
<DataTemplate> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0} -- Now only {1:C}!"> <Binding Path="Description"/> <Binding Path="Price"/> </MultiBinding> </TextBlock.Text> </TextBlock> </DataTemplate>