内置WPF IValueConverters

时间:2009-02-02 23:17:29

标签: wpf converter

好的,这是一个很好的惊喜(写了几次之后),发现 System.Windows.Controls 命名空间中已经有 BooleanToVisibilityConverter
可能还有更多这样隐藏的节省时间的人。
有人得到了吗?

2 个答案:

答案 0 :(得分:90)

我使用对象浏览器快速拖网,这就是我所拥有的。

派生自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。除了debugging converter之外还有一些聪明的东西。我也使用了the last IValueConverter,我确信还有一些lambda函数的优点。

答案 1 :(得分:25)

在3.5 SP1之前,字符串格式化需要IValueConverter。现在,您可以使用Binding上的StringFormat属性来执行此操作。

从MSDN页面:

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