Binding a nullable datetime within WPF application
.net, binding, c#, datetime, wpf
Solution
The Nullable `value` passed to your converter is not itself `null`, even if it holds a `null` value (it can't even be null, because it is a struct and therefore not nullable).
So instead of comparing `value` to `null`, you'll have to cast it to `Nullable<Datetime>` and then check its `HasValue` property.
Moreover, you seem to have something like `DateTime.MinValue` in your bound property instead of `null`. So you should check against that, too:
public object Convert(...)
{
var nullable = (Nullable<DateTime>)value;
if (nullable.HasValue && nullable.Value > DateTime.MinValue)
{
return nullable.Value.ToShortDateString();
}
return String.Empty;
}
Problem
I have a wpf application in which I had this property to bind to a datepicker ``` public Nullable<System.DateTime> dpc_date_engagement { get; set; } ``` So I add a converter : ``` public class DateConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value != null) return ((DateTime)value).ToShortDateString(); return String.Empty; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { string strValue = value.ToString(); DateTime resultDateTime; return DateTime.TryParse(strValue, out resultDateTime) ? resultDateTime : value; } } ``` In XAML file : ``` <DatePicker > <DatePicker.Text> <Binding Path="dpc_date_engagement" UpdateSourceTrigger="PropertyChanged"> <Binding.Converter> <converter:DateConverter/> </Binding.Converter> </Binding> </DatePicker.Text> </DatePicker> ``` The problem is when the date is null, the displayed text is 1/1/0001. - How can I fix my code to display an empty string instead of 01/01/0001, for null values?