内置的WPF IValueConverters

92

写了几次后,发现在 System.Windows.Controls 命名空间中已经有一个BooleanToVisibilityConverter ,这真是个不错的惊喜。

可能还有更多这样隐藏的时间节省程序。

有人知道其他的吗?

2个回答

106
我使用对象浏览器进行了快速搜索,这是我的结果。
派生自:

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,我相信还可以找到更多的lambda函数好处。

4
希望你不介意——我只是通过对研究结果进行排序来进行了编辑。很高兴看到这些内置的和特定于Xceed的内容。 - Eddie Parker
1
我想知道哪些工具在通用Windows平台上仍然可用,以便开发Windows 10通用应用程序? - TechAurelian
1
在MSDN上,“版本信息”部分仅包含来自Microsoft的所有转换器的“.NET Framework - 自3.0以来可用”。看起来通用Windows平台不受支持,@AHelloWorldDev。(例如,System.Array在“版本信息”部分明确声明了UWP支持。) - Palec

29

在 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>

请查看此行以获取更多示例:http://blogs.msdn.com/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx - Ashley Davis
此外还可以参考此链接 https://msdn.microsoft.com/zh-cn/library/system.componentmodel.typeconverter(v=vs.110).aspx。 - Tom A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接