c#和日期选择器,如何更改格式?

我在C#4.0(WPF)应用程序中有一个日期选择器,我想将textBox中可见日期的格式更改为yyyy / MM / dd。 现在我看到格式dd / MM / yyyy。

在我的datePicker的axml中我有这个代码:

             

这似乎是第一次一切正常,我可以看到我想要的格式的日期,我可以手动或使用日历更改日期,并以两种方式到达viewModel的日期是正确的。

但我有一个问题,因为我想检测一下,如果日期为空,在我的视图模型中控制这种情况。 但是如果我清除了datepicker,在我的视图模型中到达了最后一个正确的日期,所以我无法检查日期是否为空。

那么如何修改日期选择器中日期的格式并控制日期是否为空/空?

谢谢。 Daimroc。

您可以尝试以下解决方案。

首先创建以下转换器:

 public class StringToDateTimeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) { return null; } return ((DateTime)value).ToString(parameter as string, CultureInfo.InvariantCulture); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (string.IsNullOrEmpty(value as string)) { return null; } try { DateTime dt = DateTime.ParseExact(value as string, parameter as string, CultureInfo.InvariantCulture); return dt as DateTime?; } catch (Exception) { return null; } } } 

然后在xaml中,您将必须创建转换器的实例并在DatePicker的文本框中使用它

   ...    ...      ...  

最后,在viewmodel中,属性必须是DateTime类型? (即可以为空的DateTime)。

  private DateTime? _startDateSelectedDate; public DateTime? StartDateSelectedDate { get { return _startDateSelectedDate; } set { if (_startDateSelectedDate != value) { _startDateSelectedDate = value; RaisePropertyChanged(() => this.StartDateSelectedDate); } } } 

我希望这能帮到您

问候

克劳德

默认情况下,DateTimerPicker不支持空值。

也许来自MSDN的同一主题的post可以帮到你。

在那里你会发现其他想法如何实现它或一些可以为空的日期时间选择器的代码项目。