2012-02-14 67 views
3

我有一组部件,像这样:我可以将DateTimePicker日期和文本框“时间”插入日期时间吗?

<StackPanel Orientation="Horizontal" > 
    <Label>Between</Label> 
    <DatePicker Name="dtpFrom" ></DatePicker> 
    <TextBox Name="timeFrom" MinWidth="60" /> 
    <Label>and</Label> 
    <DatePicker Name="dtpTo"></DatePicker> 
    <TextBox Name="timeTo" 
       MinWidth="60" /> 
</StackPanel> 

,用户可以选择日期和设置“从”日期和时间“到”日期和时间。

我想将这些(DatePicker的日期部分与文本框内表示的相应时间部分)合并为一个DateTime值。例如,有:

DateTime dtFrom; 

...我希望能够像做(伪):

dtFrom = (DateTime) dtpFrom.Date + Convert.ToTime(timeFrom); 

有没有办法做到这一点?

+0

顺便说一句,时间值就像“11:03:49”(或PM的“23:03:49”), – 2012-02-14 18:41:39

回答

5

我会建议在你的DataContext(即:ViewModel)中处理这个,并绑定到两个单独的属性。这些可以很容易地映射到底层DateTime

例如:

// In ViewModel 
private DateTime dateTime; 

public DateTime Date 
{ 
    get { return dateTime.Date; } 
    set 
    { 
     if (value != dateTime.Date) 
     { 
      dateTime = value.Date + dateTime.TimeOfDay; 
      RaisePropertyChanged("Date"); 
     } 
    } 
} 

public TimeSpan Time 
{ 
    get { return dateTime.TimeOfDay; } 
    set 
    { 
     if (value != dateTime.TimeOfDay) 
     { 
      dateTime = dateTime.Date + value; 
      RaisePropertyChanged("Time"); 
     } 
    } 
} 

这将让您绑定每个控件相应的属性,但仍然是一个单一DateTime实例中保持一切。