C# 如何使日期选择器默认为“0”;选择一个日期;?
我有几个日期选择器,其中许多默认情况下没有日期。当有给定日期选择器的数据时,我希望它显示日期,但如果没有,我希望它在该日期的数据为空时显示默认的“选择日期”文本 在我为DatePicker创建数据绑定之前,它在我所有的DatePicker上显示了这个文本,但是在我创建了数据绑定之后,它是一个DateTime值,不能是空值。是否有其他数据类型接受日期选择器将接受的空值,或者是否有更好的方式让日期选择器显示“选择日期” 我对编程有点陌生,所以如果我没有说清楚或包含一些必需的信息,请原谅。我可以提供任何需要的东西。只要问问。日期选择器的属性属于C# 如何使日期选择器默认为“0”;选择一个日期;?,c#,wpf,date,data-binding,datepicker,C#,Wpf,Date,Data Binding,Datepicker,我有几个日期选择器,其中许多默认情况下没有日期。当有给定日期选择器的数据时,我希望它显示日期,但如果没有,我希望它在该日期的数据为空时显示默认的“选择日期”文本 在我为DatePicker创建数据绑定之前,它在我所有的DatePicker上显示了这个文本,但是在我创建了数据绑定之后,它是一个DateTime值,不能是空值。是否有其他数据类型接受日期选择器将接受的空值,或者是否有更好的方式让日期选择器显示“选择日期” 我对编程有点陌生,所以如果我没有说清楚或包含一些必需的信息,请原谅。我可以提供任
DateTime?
类型,因此它是
如果视图模型中有此项:
public DateTime DateTimeInVm { get; set; }
public DateTime? DateTimeInVm { get; set; }
在你看来:
<DatePicker SelectedDate="{Binding DateTimeInVm}"></DatePicker>
结果将是:
因此,请尝试将绑定到的属性更改为可为空的DateTime
日期选择器的属性类型为DateTime?
,因此它是空的
如果视图模型中有此项:
public DateTime DateTimeInVm { get; set; }
public DateTime? DateTimeInVm { get; set; }
在你看来:
<DatePicker SelectedDate="{Binding DateTimeInVm}"></DatePicker>
结果将是:
因此,请尝试将绑定到的属性更改为可为null的
DateTime
是否确实需要绑定日期选择器?因为您只需给它一个名称,就可以给它一个空值(用于选择日期)或设置日期:
AXML:
你真的需要绑定你的日期选择器吗?因为您只需给它一个名称,就可以给它一个空值(用于选择日期)或设置日期: AXML:
与使用Name属性相比,绑定日期选择器是否有优势?是的,假设您有一个viewmodel,其
从SelectedDate
和到SelectedDate
属性以及视图中绑定到这些属性的两个日期选择器。如果在更改UI中的起始日期和截止日期时使用绑定(通过单击日期选择器
),则这些属性将自动更新。如果不绑定它们,则必须附加事件处理程序以检查SelectedDate
是否已更改,然后在代码隐藏中更新相应的值。另外,如果你想遵循MVVM模式,你不能没有绑定:)它基本上是WPF.Tanks的卖点。因此,如果我像您的示例中那样将我的DatePicker绑定到DateTimeInVm,它将允许我直接使用它,而不使用DatePicker的SelectedDate属性。我只看到这个区别?是的,基本上你必须绑定到一个可空的DateTime
。因此,要绑定到的属性必须具有类型DateTime?
或Nullable
(它们是相同的)。因为default(DateTime?
是null
如果是“空日期”,则日期选择器
中将显示选择日期
文本。我不知道可以为null还是日期时间?类型。添加一个?在任何结构的末尾使其可为空?绑定日期选择器与使用Name属性相比是否有优势?是的,假设您有一个viewmodel,其中包含FromSelectedDate
和ToSelectedDate
属性,并且视图中有两个日期选择器
绑定到这些属性。如果在更改UI中的起始日期和截止日期时使用绑定(通过单击日期选择器
),则这些属性将自动更新。如果不绑定它们,则必须附加事件处理程序以检查SelectedDate
是否已更改,然后在代码隐藏中更新相应的值。另外,如果你想遵循MVVM模式,你不能没有绑定:)它基本上是WPF.Tanks的卖点。因此,如果我像您的示例中那样将我的DatePicker绑定到DateTimeInVm,它将允许我直接使用它,而不使用DatePicker的SelectedDate属性。我只看到这个区别?是的,基本上你必须绑定到一个可空的DateTime
。因此,要绑定到的属性必须具有类型DateTime?
或Nullable
(它们是相同的)。因为default(DateTime?
是null
如果是“空日期”,则日期选择器
中将显示选择日期
文本。我不知道可以为null还是日期时间?类型。添加一个?在任何结构的末尾使其为空?我将其绑定,以便它显示存储在数据文件中的日期时间(在我的示例中,是启动时加载的xml文件)。如果xml文件中的特定字段为空,那么我希望DatePicker显示“Select a date”;如果不是,我希望它填充日期时间数据。您解决了您的问题吗?Szabolcs Dézsi方法应该对其进行绑定,以便显示存储在数据文件中的日期时间(在我的示例中,是启动时加载的xml文件)。如果xml文件中的特定字段为空,那么我希望DatePicker显示“Select a date”;如果不是,我希望它填充日期时间数据。您解决了您的问题吗?Szabolcs Dézsi方法应该有效