日期选择器显示默认日期1/1/0001-C#WPF
我在C#WPF中使用了一个日期选择器,它在XAML中定义为:日期选择器显示默认日期1/1/0001-C#WPF,c#,wpf,datepicker,C#,Wpf,Datepicker,我在C#WPF中使用了一个日期选择器,它在XAML中定义为: <DatePicker x:Name="TheDate" Width="200" Text="{Binding ReportPlanningDate ,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}" IsTodayHighlighted="True" /> 即使我将IsTodayHighlighted设置为T
<DatePicker x:Name="TheDate" Width="200" Text="{Binding ReportPlanningDate ,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}" IsTodayHighlighted="True" />
即使我将
IsTodayHighlighted
设置为True
,它也会显示1/1/0001
。我在这里遗漏了什么?IsTodayHighlighted
只突出显示当前日期(如果您将日历滚动到当前日期,您将看到它突出显示),但它没有选择它。
如果将属性Text
绑定到ViewModel的属性,则该属性是数据驱动的,因此它将根据数据选择日期。由于未设置数据,因此它具有默认值(1.1.0001)。要解决此问题,请指定默认值:
public DateTime _ReportPlanningDate = DateTime.Now;
IsTodayHighlighted
仅用于突出显示今天的日期。未设置默认日期。如果要设置默认日期,则需要设置SelectedDate
属性
<my:DatePicker SelectedDate="{x:Static sys:DateTime.Now}"/>
如本节所述。将支持字段标记为私有
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}
如果您在集合
中放置断点,是否会在加载页面时命中该断点?如果是,那么value
的值是多少?它说:value={1/1/0001 12:00:00 AM}@alexeit然后,确保将其设置为当前日期。您可以将\u ReportPlanningDate
设置为DateTime。现在.date也在ViewModel的构造函数中,您可以在其中编写更详细的逻辑。请注意,backing字段应该是private,而不是public,但这不是面向MVVM的,应该为SelectedDate
PlanningDate在项目中的其他位置进行绑定。thnx用于“专用”注释。
public class MyVM : ViewModelBase {
public MvVM() {
_ReportPlanningDate = DateTime.Now.Date;
<DatePicker SelectedDate={Binding ReportPlanningDate}