WPF: How do I apply custom formatting to a ListView?

binding, formatting, listview, styles, wpf

Solution

For Value and AsOfDate columns use `StringFormat` attribute - a new feature of WPF 3.5 SP1. More about it here:

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/

If you want to call a custom function on a bound value, then implement a value converter for that.

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

You can call your custom function from convert method.

Problem

My ListView is petty simple: ``` <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> ``` What I want to do is: - Format "Value" using the built-in format "D0" - Format "AsOfDate" and "Last Modified Date" using the custom string "MMM d hh:mm:ss tt" - Format "Duration" with a function defined as "String DurationString(TimeSpan)

Original source