Формат поля времени WPF Datagrid чч: мм

Я использую Datagrid WPF Toolkit с LINQ to SQL.

       <my:DataGrid AutoGenerateColumns="False" Name="dataGrid2">
        <my:DataGrid.Columns>
            <my:DataGridTextColumn Header="Date" MinWidth="80"
                                       Binding="{Binding Date, StringFormat=d}"
                                       CanUserSort="False"/>
            <my:DataGridTextColumn Header="Time"  MinWidth="70" 
                                       Binding="{Binding Time}"
                                       CanUserSort="False" />
            <my:DataGridTextColumn Header="Description" MinWidth="200"
                                       Binding="{Binding Description}" 
                                       CanUserSort="False"/>
        </my:DataGrid.Columns>
    </my:DataGrid>

Столбец Time привязан к полю таблицы SQL Server с типом данных Time. Теперь значение времени в Datagrid отображается в формате чч:мм:сс.

Как изменить представление времени в столбце Time сетки данных на hh:mm, удалив секунды?

EDIT: Использование StringFormat=t не дает результата.

<my:DataGridTextColumn Header="Time"  MinWidth="70" 
                                       Binding="{Binding Time, StringFormat=t}"
                                       CanUserSort="False" />

person rem    schedule 04.03.2010    source источник


Ответы (3)


Это можно сделать с помощью ValueConverter:

Это может помочь: Встроенные преобразователи WPF IValueConverters

person Shoaib Shaikh    schedule 04.03.2010

без секунд

<toolkit:DataGridTextColumn
                    IsReadOnly="True"
                    Width="SizeToCells"
                    Header="F. Resolución"
                    Binding="{Binding ColName, StringFormat='MM/dd/yyyy HH:mm'}" />

с секундами

<toolkit:DataGridTextColumn
                    IsReadOnly="True"
                    Width="SizeToCells"
                    Header="F. Resolución"
                    Binding="{Binding ColName, StringFormat='MM/dd/yyyy HH:mm:ss'}" />

здесь только время с секундами:

<toolkit:DataGridTextColumn
                    IsReadOnly="True"
                    Width="SizeToCells"
                    Header="F. Resolución"
                    Binding="{Binding ColName, StringFormat='HH:mm:ss'}" />
person Farzad J    schedule 25.02.2013
comment
другим решением было бы преобразовать ваш Timespan (timespan2 в С# равен типу данных time в сервере sql) в DateTime, а затем попробовать приведенное выше решение! - person Farzad J; 20.02.2014
comment
у меня это сработало, но как я могу сделать так, чтобы ...StringFormat='HH:mm:ss'} не было через сто часов? - person Kokombads; 13.02.2015

Вам нужно будет преобразовать ваш тип из SqlDateTime в DateTime, чтобы строковый формат работал. Сделайте это, приведя свой параметр к дате и времени. Так, например, при использовании С# для ввода вашей таблицы.

dlEntry.StartTime = (DateTime)reader.GetSqlDateTime(3);

Это даст вам возможность использовать преобразователь C# по умолчанию для времени.

<my:DataGridTextColumn Header="Time"  MinWidth="70" 
Binding="{Binding Time, StringFormat=t}"
CanUserSort="False" />
person C Ried    schedule 19.02.2014