Встроенные конвертеры WPF IValue - PullRequest
80 голосов
/ 03 февраля 2009

Хорошо, было приятным сюрпризом (после написания этого несколько раз) обнаружить, что уже существует BooleanToVisibilityConverter в System.Windows.Controls пространстве имен.

Вероятно, есть еще такие скрытые экономители времени.

Кто-нибудь есть?

Ответы [ 2 ]

92 голосов
/ 03 февраля 2009

Я сделал быстрый трал, используя Object Browser, и вот что у меня есть.

Получено из 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

Получено из IMultiValueConverter:

System.Windows.Controls.BorderGapMaskConverter
System.Windows.Navigation.JournalEntryUnifiedViewConverter
System.Windows.Controls.MenuScrollingVisibilityConverter

Microsoft.Windows.Themes.ProgressBarBrushConverter
Microsoft.Windows.Themes.ProgressBarHighlightConverter

Обратите внимание, что Xceed (без подключения) доступны бесплатно с их DataGrid. Кроме того, есть такие умные вещи, как конвертер отладки . Я также использовал последний IValueConverter , и я уверен, что есть еще кое-что о лямбда-функциях.

26 голосов
/ 03 февраля 2009

До версии 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>
...