In a WPF application, i display data in a datagrid. In this datagrid there is some DateTime value.
Where DateTime are not getting set, it displays 01/01/0001, it's ok because DateTime are not nullable.
In this case, i would like to display " - " .
I think i need to use a converter.
I tried this :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using 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;
}
}
}
I added this on my XAML :
xmlns:converter="clr-namespace:myNameSpace"
On after :
<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>
My code don't compile because of the
Converter={converter:Converter.DateConverter}}
Anyone could help me please ?
To use the converter you have to define it as a resource and use that resource:
<Window.Resources>
<converter:DateConverter x:Key="DateConverter" />
</Window.Resources>
Usage:
Converter={StaticResource DateConverter}
See this tutorial for more info.