Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使日期选择器默认为“0”;选择一个日期;?_C#_Wpf_Date_Data Binding_Datepicker - Fatal编程技术网

C# 如何使日期选择器默认为“0”;选择一个日期;?

C# 如何使日期选择器默认为“0”;选择一个日期;?,c#,wpf,date,data-binding,datepicker,C#,Wpf,Date,Data Binding,Datepicker,我有几个日期选择器,其中许多默认情况下没有日期。当有给定日期选择器的数据时,我希望它显示日期,但如果没有,我希望它在该日期的数据为空时显示默认的“选择日期”文本 在我为DatePicker创建数据绑定之前,它在我所有的DatePicker上显示了这个文本,但是在我创建了数据绑定之后,它是一个DateTime值,不能是空值。是否有其他数据类型接受日期选择器将接受的空值,或者是否有更好的方式让日期选择器显示“选择日期” 我对编程有点陌生,所以如果我没有说清楚或包含一些必需的信息,请原谅。我可以提供任

我有几个日期选择器,其中许多默认情况下没有日期。当有给定日期选择器的数据时,我希望它显示日期,但如果没有,我希望它在该日期的数据为空时显示默认的“选择日期”文本

在我为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方法应该有效