WPF: Как применить пользовательское форматирование к ListView? - PullRequest
1 голос
/ 27 января 2010

Мой 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»
  • Форматируйте «AsOfDate» и «Дата последнего изменения», используя пользовательскую строку «MMM d чч: мм: сс тт»
  • Форматировать «Длительность» с помощью функции, определенной как «String DurationString (TimeSpan)

Ответы [ 2 ]

5 голосов
/ 27 января 2010

Для столбцов 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.

3 голосов
/ 27 января 2010

StringFormat может быть добавлено к вашему обязательному заявлению. Например

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

См. в этом посте для большего количества примеров использования

...