将字符串绑定到WPF中的日期选择器选定日期

时间:2016-08-16 18:04:55

标签: c# wpf datetime

我有一个刺痛,我转换为类型(日/月/日)的日期格式为<detail> <band height="121"> <textField isStretchWithOverflow="true"> <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="0" y="0" width="284" height="120" isPrintWhenDetailOverflows="true"/> <textElement markup="html"> <font fontName="Times New Roman" pdfFontName="Times-Roman" isPdfEmbedded="true"/> <paragraph spacingAfter="20"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$F{RECIPIENTS}+"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]]></textFieldExpression> </textField> </band> </detail>

我想将此绑定到日期时间选择器选定日期,如下所示

15/08/2016 11:00:00 AM

如果我这样做

var MyDate= "15/08/2016 11:00:00 AM";
DateTimePicker1.SelectedDate = DateTime.ParseExact(MyDate,"dd/mm/yyyy",
CultureInfo.InvariantCulture);

这完美无缺。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您必须为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;

这行代码而不是其他三个语句。此代码应以您在上面的代码行中指定的格式格式化字符串。

答案 1 :(得分:-1)

尝试使用:

DateTime.ParseExact("15/08/2016 11:00:00 AM", "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

我为AM / PM格式添加 tt

修改

<DatePickerTextBox Text="{Binding Date1, StringFormat='dd/MM/yyyy HH:mm:ss tt'}"></DatePickerTextBox>