WPF:如何将自定义格式应用于ListView?

时间:2010-01-27 02:57:47

标签: wpf listview binding formatting styles

我的ListView很简单:

<ListView ItemsSource="{Binding Path=ActiveCounters}">
    <ListView.View>
        <GridView>
            <GridViewColumn  Header="Name" DisplayMemberBinding="{Binding Path=Name}" />
            <GridViewColumn  Header="Value"  DisplayMemberBinding="{Binding Path=Value}" />
            <GridViewColumn  Header="As Of Date"  DisplayMemberBinding="{Binding Path=AsOfDate}" />
            <GridViewColumn  Header="Duration"  DisplayMemberBinding="{Binding Path=Duration}" />
            <GridViewColumn  Header="Last Modified Date"  DisplayMemberBinding="{Binding Path=Timestamp}" />
        </GridView>
    </ListView.View>
</ListView>

我想做的是:

  • 使用内置格式“D0”
  • 格式化“值”
  • 使用自定义字符串“MMM d hh:mm:ss tt”格式化“AsOfDate”和“上次修改日期”
  • 使用定义为“String DurationString(TimeSpan)
  • 的函数格式化”Duration“

2 个答案:

答案 0 :(得分:5)

对于Value和AsOfDate列,使用StringFormat属性 - WPF 3.5 SP1的新功能。 更多关于它的信息:

http://blogs.msdn.com/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx

http://elegantcode.com/2009/04/07/wpf-stringformat-in-xaml-with-the-stringformat-attribute/

如果要在绑定值上调用自定义函数,请为其实现值转换器。

http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

您可以从convert方法调用自定义函数。

答案 1 :(得分:3)

StringFormat可以添加到绑定语句中。例如

<GridViewColumn
   Header="As Of Date"
   DisplayMemberBinding="{Binding Path=AsOfDate, StringFormat={}{0:MMM d hh:mm:ss tt}}" />

有关更多用法示例,请参阅this post