在WPF DataGrid中单独编辑日期和时间

时间:2016-04-22 18:20:10

标签: c# wpf datetime time binding

我有一个名为Time的Timesheet记录类。此类包括员工销的字段,打卡,打卡等。我有一个绑定到DataGrid的这些Times的集合。

我的目标是能够只编辑打卡的时间组件。每个曾经和日期组件也需要调整。对此最好的方法是什么?

My Current XAML

<DataGridTemplateColumn Header="In Day">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
             <TextBlock Text="{Binding Path = In, StringFormat = '{}{0:ddd}'}"  />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate >
            <DatePicker x:Name="datePicker" SelectedDate="{Binding Path = In}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="In">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path = In, StringFormat= '{}{0:hh:mm tt}'}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate >
            <telerik:RadTimePicker SelectedValue="{Binding Path = In}" TimeInterval="0:15:0"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

我的问题是,当我在DatePicker中选择一个日期时,它将我的时间设置为上午12:00。

这样做的最佳方法是什么?我是否需要在单独的字段中存储日期和时间?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

分别存储日期和时间是一个好主意。在ViewModel中,保留两个DateTime属性,一个用于日期,一个用于时间,两者都包含Changed通知。将它们绑定到您的日期和时间列,并在其设置的访问器中,分别修改第三个DateTime属性,这是您的最终值。