Simplified Question:
我在WPF中有一个日期选择器 . 我在datepicker的文本框中输入值30/10/1983 . 我需要将值发回到我的viewmodel,在哪里我将它绑定到DateTime?属性 .
有什么方法可以实现这一点 . mm / dd / yyyy格式触发回发但不是dd / mm / yyyy .
DatePicker代码如下 .
<DatePicker Grid.Row="2" Name="inputDate"
Text="{Binding BirthDate,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
>
</DatePicker>
视图模型属性如下所示 .
private DateTime? birthDate;
public DateTime? BirthDate
{
get
{
return this.birthDate;
}
set
{
this.birthDate = value;
OnPropertyChanged("BirthDate");
}
}
我在datepicker文本框中输入值10/10,使用值调用setter,但是当我输入整个日期30/10/1983时,我仍然具有等于NULL的视图模型属性 .
我已在日历设置中将格式更改为英语 - 联合王国,而我的CurrentCulture恰当地反映了en-GB .
Original Question:
我在WPF中有一个datetimepicker控件,我已将text属性绑定到视图模型中的Nullable DateTime .
我面临的问题是当我以MM / dd / yyyy格式输入一个值时,我在视图模型中得到一个值回发,表示新值 .
但是当我以dd / MM / yyyy格式输入值时,我没有在视图模型中收到通知,并且值丢失了 . 视图模型中的绑定属性为null .
短日期格式是我在日历设置和日期格式中指定的格式,其中对于短日期格式,我将条目提供为“dd / MM / yyyy” .
有人可以帮助我这个场景我在dd / MM / yyyy格式接受日期,我不想硬编码,我希望从日历设置中选择短日期格式,我也希望收到视图模型中的更新值也是如此 .
1 回答
问题是,无效日期不会使用ViewModel DateTime属性设置正确的值 . 因此,您可以拦截它并使用转换器正确转换 .
一个例子:
你的XAML代码就像: