2013-05-02 129 views
3

在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}} 
編譯

任何人都可以幫助我嗎?

回答

2

使用已轉換器將其定義爲一種資源,並使用資源:

<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

0
<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