WPF DatePicker显示时间和日期

时间:2014-09-10 11:22:59

标签: wpf xaml datepicker datetimepicker

我在DatePicker中有一个DataGrid对象,可以从数据库或属性中成功显示日期:

<DataGridTemplateColumn.CellTemplate>
   <DataTemplate>
      <DatePicker SelectedDate="{Binding Date, StringFormat=dd/MM/yyyy}"/>
   </DataTemplate>   
</DataGridTemplateColumn.CellTemplate>

现在我想在日期前面显示时间。这是我尝试过的,但它不起作用:

<DataGridTemplateColumn.CellTemplate>
   <DataTemplate>
      <DatePicker SelectedDate="{Binding Date, StringFormat='dd/MM/yyyy HH:mm:ss'}"/>
   </DataTemplate>   
</DataGridTemplateColumn.CellTemplate>

注意:我希望在代码隐藏中执行此操作。

3 个答案:

答案 0 :(得分:8)

使用扩展名 DateTimePicker

答案 1 :(得分:1)

除了不使用其他组件,如果您只想以您要编辑的格式显示日期,您可以这样做:

    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock  Text="{Binding Path=Date,StringFormat={}{0:dd/MM/yyyy}}"  VerticalAlignment="Center" HorizontalAlignment="Left">
            </TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>

答案 2 :(得分:0)

您可以执行以下操作:

            <DataGridTemplateColumn Header="YourDate">
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <DatePicker SelectedDate="{Binding YourDate, UpdateSourceTrigger=PropertyChanged}" />
                            <TextBox Margin="2 0 0 0" Text="{Binding YourDate, UpdateSourceTrigger=PropertyChanged, StringFormat='t'}" />
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding YourDate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

这将在绑定到相同属性的TextBox旁边显示一个DatePicker。 TextBox的StringFormat仅显示日期。

UpdateSourceTrigger设置为PropertyChanged,因此用户不会发生冲突。