如何格式化绑定的wpf datagrid文本列以不显示新的DateTimes?

时间:2015-07-28 21:14:47

标签: c# wpf xaml datetime datagrid

我有一个绑定到我的对象属性的列。属性LastRunDate是一个Datetime。在默认/开始时,它会显示1/1/1 12:00 AM的日期。

我的XAML中是否有办法格式化我的日期,如果我有一个这个值的日期,而是显示一个字符串"无"甚至是空白?有没有办法把它放到我的字符串格式中?

现在就是XAML:

       <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}" Header="Name" />
            <DataGridTextColumn Binding="{Binding SourceServerName}" Header="Server Source" />
            <DataGridTextColumn Binding="{Binding SourceDataBaseName}" Header="Database" />
            <DataGridTextColumn Binding="{Binding LastRunTime, StringFormat={}\{0:MM/dd/yyyy hh:mm\}}" Header="Last Run Time" />
        </DataGrid.Columns>

2 个答案:

答案 0 :(得分:3)

转换器:

var link = document.createElement('a');
link.href = req.query.domain;

var formattedDomain = link.hostname; //yay

XAML:

class DateTimeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is DateTime)
        {
            var test = (DateTime)value;
            if (test == DateTime.MinValue)
            {
                return "None";
            }
            var date = test.ToString("MM/dd/yyyy hh:mm");
            return (date);
        }

        return string.Empty;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

答案 1 :(得分:1)

LastRunDate的类型更改为Datetime?。然后使用:

<DataGridTextColumn Binding="{Binding LastRunTime, TargetNullValue=None,
                     StringFormat={}\{0:MM/dd/yyyy hh:mm\}}" Header="Last Run Time" />

由于你的财产在开始时尚未初始化(即null),你会看到&#34;无&#34;。