DatePicker显示默认日期1/1/0001 - C#WPF

时间:2017-03-06 08:21:39

标签: c# wpf datepicker

我在C#WPF中使用了一个日期选择器,它在XAML中被定义为:

  <DatePicker  x:Name="TheDate"  Width="200" Text="{Binding ReportPlanningDate ,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}" IsTodayHighlighted="True" />

绑定属性ReportPlanningDate定义为:

public DateTime ReportPlanningDate
        {
            get { return _ReportPlanningDate; }
            set
            {
                if (_ReportPlanningDate == value) return;
                _ReportPlanningDate = value;
                PlanningDate = _ReportPlanningDate;
                OnPropertyChanged("ReportPlanningDate");
            }
        }
        public DateTime _ReportPlanningDate;
        public DateTime PlanningDate;

即使我将IsTodayHighlighted设置为True,也会显示1/1/0001。我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

IsTodayHighlighted仅突出显示当前日期(如果您将日历滚动到当天,您会看到它已突出显示),但它不会选中它。 如果您将属性Text绑定到ViewModel的属性,则它是数据驱动的,因此它将根据数据选择日期。由于未设置数据,因此它具有默认值(1.1.0001。) 要解决此问题,请指定默认值:

public DateTime _ReportPlanningDate = DateTime.Now;

答案 1 :(得分:1)

将支持字段标记为私有

private DateTime _ReportPlanningDate; // only the property is public
//public DateTime PlanningDate; what's this?

您可以在ViewModel的构造函数中设置它

public class MyVM : ViewModelBase {
    public MvVM() {
        _ReportPlanningDate = DateTime.Now.Date;

你应该绑定日期选择器的选定日期

<DatePicker SelectedDate={Binding ReportPlanningDate}

答案 2 :(得分:0)

IsTodayHighlighted仅用于突出显示今天的日期。未设置默认日期。如果要设置默认日期,则需要设置SelectedDate属性。

<my:DatePicker SelectedDate="{x:Static sys:DateTime.Now}"/>

如果需要,请添加此引用。

xmlns:sys="clr-namespace:System;assembly=mscorlib"

如此link中所述。