我有一个字符串,我将其转换为日期格式类型(dd/mm/yyyy)为15/08/2016 11:00:00 AM
我想将此绑定到Datetime Picker Selected Date,如下所示
var MyDate= "15/08/2016 11:00:00 AM";
DateTimePicker1.SelectedDate = DateTime.ParseExact(MyDate,"dd/mm/yyyy",
CultureInfo.InvariantCulture);
如果我这样做
DateTimePicker1.SelectedDate = DateTime.Now;
这工作完美。我该怎么做呢?
你必须为DatePickerTextBox
指定一个样式
在您的窗口中,在<Grid>
开始之前,使用此代码定义DatePickerTextBox
的样式
<Window.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<TextBox x:Name="PART_TextBox"
Text="{Binding Path=SelectedDate, StringFormat='dd/mm/yyyy',
RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
在上面的代码中,您应该关注的行是
Text="{Binding Path=SelectedDate, StringFormat='dd/mm/yyyy'
如果您看到,您可以为出现在此DatePickerTextBox
中的文本定义字符串格式。
现在您应该运行仅使用
的代码版本。DateTimePicker1.SelectedDate = DateTime.Now;
这行代码,而不是其他三条语句。此代码应按照您在上述代码行中指定的格式格式化字符串。
试试:
DateTime.ParseExact("15/08/2016 11:00:00 AM", "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
我添加了tt AM/PM格式
编辑:<DatePickerTextBox Text="{Binding Date1, StringFormat='dd/MM/yyyy HH:mm:ss tt'}"></DatePickerTextBox>