StringFormat не форматирует дату (строковый тип данных) внутри сетки данных в WPF - PullRequest
0 голосов
/ 19 сентября 2018

StringFormat не работает при форматировании даты.Столбец TransactionTime имеет строковый формат, и мне нравится форматировать его в «MM / dd / yyyy», но сетка всегда показывает фактическое значение

'2018-09-12 08: 14: 51'

Я пытался использовать текстовый блок и DataGridTextColumn, но безуспешно.

<DataGrid.Columns>
            <DataGridTextColumn Header="Transaction Date"  Width="auto" MinWidth="100" Binding="{Binding  Path=TransactionTime,StringFormat='{}{0:MM/dd/yy HH:mm}',ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}"></DataGridTextColumn>


 <DataGridTemplateColumn Header="Transaction Time">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding TransactionTime, StringFormat={}{0:MM/dd/yyyy}}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>

 </DataGrid.Columns>

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

StringFormats не применяются к string свойствам.

Вы должны либо изменить тип исходного свойства на DateTime, либо вернуть уже отформатированный string из свойства TransactionType, либо добавить новое свойство, которое возвращает отформатированную дату и привязать к ней.:

public string FormattedtTransactionTime
{
    get
    {
        DateTime dt;
        if (!string.IsNullOrEmpty(TransactionTime)
            && DateTime.TryParseExact(TransactionTime, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
            return dt.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
        return null;
    }
}
0 голосов
/ 19 сентября 2018

Попробуйте изменить StringFormat={}{0:MM/dd/yyyy}" на StringFormat=MM/dd/yyyy" или проверьте, имеет ли столбец таблицы данных свойство DataFormatString, если это так, задайте для него формат следующим образом:

DataFormatString={}{0:MM/dd/yyyy}"

...