DatePicker 数据绑定将默认值设置为 1/1/0001 WPF c#
Posted
技术标签:
【中文标题】DatePicker 数据绑定将默认值设置为 1/1/0001 WPF c#【英文标题】:DatePicker databinding sets default value to 1/1/0001 WPF c# 【发布时间】:2012-06-24 04:59:51 【问题描述】:我有一个 DatePicker 绑定到对象内的 DataTime,并且在运行时,而不是 DatePicker 中的字符串“Select a Date”,而是显示“1/1/0001”,这使得很难使用实际的日历.当我将 DatePicker 与字符串绑定时,我没有遇到问题,但是将其更改为 DateTime 就可以了。请让我知道这是如何工作的。这是我目前所拥有的:
在 XAML 中我有:
<DatePicker Grid.Column="4" Grid.Row="9" Name="dueDateBox" VerticalAlignment="Center">
<DatePicker.SelectedDate>
<Binding Path="DueDate" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay">
<Binding.ValidationRules>
<my:DateRangeRule/>
</Binding.ValidationRules>
</Binding>
</DatePicker.SelectedDate>
</DatePicker>
在 C# 中我有:
public DateTime DueDate
get return dueDate;
set
if (DueDate != null) || !DueDate.Equals(value))
dueDate = value;
OnPropertyChanged("DueDate");
我还设置了一个依赖属性,不确定这是否起作用:
public static readonly DependencyProperty DueDateProperty =
DependencyProperty.Register("DueDate", typeof(DateTime),
typeof(UpdateJobDialog), new PropertyMetadata(DateTime.Now));
【问题讨论】:
【参考方案1】:可能有助于使用 DateTime 吗?而不是 DateTime,因为 DateTime 不可为空,所以您设置为默认值 1/1/0001,而不是 null,这将导致请选择您习惯的日期消息。
public DateTime? DueDate
//Need to change the type of the private variable as well
get return dueDate;
set
if (DueDate != null) || !DueDate.Equals(value))
dueDate = value;
OnPropertyChanged("DueDate");
【讨论】:
如果该字段可以为空,它可以工作。如果字段不为空怎么办?【参考方案2】:您没有将 DueDateProperty
依赖属性连接到您的 DueDate
属性。试试这个:
public DateTime DueDate
get return (DateTime)GetValue(DueDateProperty);
set SetValue(DueDateProperty, value);
【讨论】:
【参考方案3】:我在将具有空值的日期属性绑定到日期选择器时遇到了同样的问题。无论我尝试什么,显示的值都是 01/01/0001。我最终通过将第二个属性设置为专门绑定到 xaml 日期选择器的字符串来解决此问题,如果我的日期为空,则返回 string.empty
这解决了它...(VB中的代码)
Public Property ClosedDateDTP() As String
Get
If _closedDate = Nothing Then
Return String.Empty
Else
Return _closedDate.ToString
End If
End Get
Set(value As String)
If value = Nothing Then
_closedDate = Nothing
Else
_closedDate = CDate(value)
End If
End Set
End Property
XAML 日期选择器代码...
<DatePicker x:Name="dtpClosedDate"
SelectedDate="Binding ClosedDateDTP, Mode=TwoWay"
HorizontalAlignment="Left"
Margin="284,120,0,0"
VerticalAlignment="Top">
</DatePicker>
【讨论】:
以上是关于DatePicker 数据绑定将默认值设置为 1/1/0001 WPF c#的主要内容,如果未能解决你的问题,请参考以下文章
ReactJS + Material-UI:如何使用 Material-UI 的 <DatePicker> 将当前日期设置为默认值?
抛出错误 RangeError:将自定义日期设置为 react-datepicker 的 DatePicker 时时间值无效
iview组件DatePicker type="datetimerange绑定初始默认时间值
在jQuery UI datepicker中将今天的日期设置为默认日期[重复]