2016-04-22 37 views
0

我有一个Timeheet记录的类叫Time。本课程包括员工针,领队,出拳等领域。我有一组绑定到DataGrid的Times。在WPF DataGrid中分别编辑日期和时间

我的目标是能够仅编辑一次打卡的时间组件。每一次,虽然日期组件也需要调整。对此最好的方法是什么?

我目前的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 AM。

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

+0

将您的DateTime放入一个绑定的隐藏列。将日期的副本放入可编辑列中,将可编辑时间放入另一列。当其中一个可编辑列被更新时,您需要更新隐藏列,以便该值正确 - Date + Time。 – 2016-04-22 18:59:55

回答

0

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