如何格式化我的绑定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>
转换器:
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"