如何格式化我的绑定wpf数据网格文本列,不显示新的日期时间

本文关键字:显示 时间 日期 文本 网格 我的 格式化 绑定 wpf 数据网 数据 | 更新日期: 2023-09-27 18:05:25

我有一个绑定到对象属性的列。属性lastundate是一个日期时间。在default/start选项下,它显示的日期为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>

如何格式化我的绑定wpf数据网格文本列,不显示新的日期时间

转换器:

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();
    }
}
XAML:

<DataGrid ItemsSource="{Binding Items}">
    <DataGrid.Resources>
        <stackOverflow:DateTimeConverter x:Key="DateTimeConverter"/>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding LastRunTime, Converter={StaticResource DateTimeConverter}}" Header="Last Run Time" />
    </DataGrid.Columns>
</DataGrid>

修改LastRunDate的类型为Datetime?。然后使用如下命令:

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

因为你的属性在开始时没有初始化(即它是null),你会看到"None"