2012-02-14 2 views
3

나는과 같이 구성 요소의 그룹을 가지고 : 사용자가 날짜를 선택하고 설정할 수 있습니다DateTimePicker 날짜와 "Time"이라는 텍스트 상자를 DateTime에 구울 수 있습니까?

<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의 날짜 부분과 TextBox 내에 표시된 해당 시간 부분을 결합하여 DateTime 값으로 결합하려고합니다. 예를 들어,로 :

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

이 할 수있는 방법이 있나요 :

DateTime dtFrom; 

... 나는 (의사) 같은 것을 할 수 있도록하려면?

+0

BTW, 시간 값은 "11:03:49"(또는 PM의 경우 "23:03:49")와 같습니다. –

답변

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 인스턴스 내에서 모든 것을 유지 할 것입니다.

관련 문제