【发布时间】:2014-11-07 11:13:32
【问题描述】:
简化问题:
我在 WPF 中有一个日期选择器。我在日期选择器的文本框中输入了一个值 30/10/1983。我需要将值发布回我的视图模型,我在哪里将它绑定到日期时间?属性。
有什么办法可以做到这一点。 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 的视图模型属性。
我已在日历设置中将格式更改为 English-UnitedKingdom,并且我的 CurrentCulture 适当地反映了 en-GB。
原问题:
我在 WPF 中有一个 datetimepicker 控件,我已将文本属性绑定到视图模型中的 Nullable DateTime。
我面临的问题是,当我输入格式为 MM/dd/yyyy 的值时,我确实在视图模型中得到一个值回发,指示新值。
但是当我以 dd/MM/yyyy 格式输入值时,我在视图模型中没有收到通知,并且值丢失了。视图模型中的绑定属性为空。
短日期格式是我在日历设置和日期格式中指定的格式,其中对于短日期格式,我提供的条目为“dd/MM/yyyy”。
在我接受 dd/MM/yyyy 格式的日期并且我不想硬编码的情况下,有人可以帮我解决这个问题,我希望从日历设置中选择短日期格式,而且,我希望也可以在视图模型中接收更新的值。
【问题讨论】:
-
发布您的代码或示例
-
@TheodosiusVonRichthofen 我在这里发布了一个简化的问题stackoverflow.com/questions/26843658/…
-
@Sandepku,无论您现在的问题多么简单,您仍然应该显示您的相关代码。
-
您的格式问题不只是
Culture问题吗?例如,英国使用的默认日期格式是 dd/mm/yyyy,而在欧洲的某些地方,它是 mm/dd/yyyy。查看How can i globally set the Culture in a WPF Application? 问题的答案,了解如何更改当前的Culture。 -
@Sheridan 对此感到抱歉
标签: c# wpf datetime datetimepicker