using System; namespace Connected { /// /// A ready made DateTime? to string binding converter with configurable date format and culture /// public class NullableDateConverter : Converter { public string DateFormat { get; set; } public NullableDateConverter(string format = "yyyy-MM-dd") { DateFormat = format; SetFunc = OnSet; GetFunc = OnGet; } private DateTime? OnGet(string arg) { try { return DateTime.ParseExact(arg, DateFormat, Culture); } catch (FormatException e) { UpdateGetError(e.Message); return null; } } private string OnSet(DateTime? arg) { if (arg == null) return null; try { return arg.Value.ToString(DateFormat, Culture); } catch (FormatException e) { UpdateSetError(e.Message); return null; } } } /// /// A ready made DateTime to string binding converter with configurable date format and culture /// public class DateConverter : Converter { public string DateFormat { get; set; } = "yyyy-MM-dd"; public DateConverter(string format) { DateFormat = format; SetFunc = OnSet; GetFunc = OnGet; } private DateTime OnGet(string arg) { try { return DateTime.ParseExact(arg, DateFormat, Culture); } catch (FormatException e) { UpdateGetError(e.Message); return default; } } private string OnSet(DateTime arg) { try { return arg.ToString(DateFormat, Culture); } catch (FormatException e) { UpdateSetError(e.Message); return null; } } } }