在WPF数据网格中格式化可空数据时间

在WPF数据网格中格式化可空数据时间

问题描述:

在WPF应用程序中,我在数据网格中显示数据。 在这个数据网格中有一些DateTime值。在WPF数据网格中格式化可空数据时间

其中DateTime没有设置,它显示01/01/0001,没关系,因为DateTime不可为空。

在这种情况下,我想显示“ - ”。

我想我需要使用一个转换器。

我尝试这样:

使用系统; using System.Collections.Generic;使用System.Linq的 ; using System.Text; using System.Threading.Tasks;使用System.Globalization的 ; using System.Windows.Data;

namespace Phoenix_CRM 
{ 
    public class Converter 
    { 
    } 

    public class DateConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value == null) 
       return "--/--/----"; 

      DateTime returnVal; 

      if (DateTime.TryParse(value.ToString(), out returnVal)) 
      { 
       if (returnVal != DateTime.MinValue) 
        return returnVal; 
       else 
        return "--/--/----"; 
      } 
      else 
       return "--/--/----"; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value == null) 
       return DateTime.MinValue; 

      DateTime val; 
      if (value.ToString() == "--/--/----") 
       return DateTime.MinValue; 

      if (DateTime.TryParse(value.ToString(), out val)) 
       return val; 
      else 
       return DateTime.MinValue; 
     } 

    } 

} 

我说这对我的XAML:

xmlns:converter="clr-namespace:myNameSpace" 

后:

<DataGrid Grid.Column="0" Grid.Row="2"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{ Binding Path= dDate,StringFormat={}{0:dd/MM/yyyy HH:mm},Converter={converter:Converter.DateConverter}}" Header=" Date " Width="Auto" IsReadOnly="True" /> 
    </DataGrid.Columns> 
</DataGrid> 

我的代码不会因为

Converter={converter:Converter.DateConverter}} 
编译

任何人都可以帮助我吗?

使用已转换器将其定义为一种资源,并使用资源:

<Window.Resources> 
    <converter:DateConverter x:Key="DateConverter" /> 
</Window.Resources> 

用法:

Converter={StaticResource DateConverter} 

更多信息,请参见this tutorial

+0

谢谢:)代码编译!不过,我有一个带有InnerException的XamlParseException:无法找到名为“DateConverter”的资源 – 2013-05-02 08:25:39

+0

@WalterFabioSimoni:尝试将资源置于窗口或用户控件的资源集合中,而不是数据网格。 – 2013-05-02 08:26:37

+0

是的!没关系:)非常感谢:) – 2013-05-02 08:38:56

<Window.Resources> 
     <converter:DateConverter x:Key="DateConverter" /> 
    </Window.Resources> 

    <DataGrid Grid.Column="0" Grid.Row="2"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding Path= dDate,StringFormat={}{0:dd/MM/yyyy HH:mm},Converter={StaticResource DateConverter}}" Header=" Date " Width="Auto" IsReadOnly="True" /> 
     </DataGrid.Columns> 
    </DataGrid> 
+1

无法解析资源:DateConverter :( – 2013-05-02 08:37:19