2012-02-14 94 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實例中保持一切。