2016-04-22 15 views
0

私はタイムと呼ばれるタイムシートレコードのクラスを持っています。このクラスには、従業員ピン、パンチ、アウトパンチなどのフィールドが含まれます。私は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> 

私の問題は、私は日付ピッカーで日付を選択するとき、それは午前12:00に私の時間を設定していることです。

これを行うにはどのような方法が最適ですか?別のフィールドに日付と時刻を格納する必要がありますか?もしそうなら、どうしたらいいですか?

+0

バインドされた非表示の列にDateTimeを配置します。編集可能な列に日付のコピーを入れ、編集可能な時間を別の列に入れます。編集可能な列の1つが更新されたら、値が正しいように非表示列を更新する必要があります - 日付+時間。 –

答えて

0

別々に日付と時刻を保存することをお勧めします。 ViewModelで、DateとViewの2つのDateTimeプロパティをChanged通知で保持します。それらを日付と時刻の列にバインドし、設定されたアクセサで、それぞれ最終値である3番目のDateTimeプロパティを変更します。