2012-06-21 1 views
3

DatePicker에서 "Select a Date"문자열 대신 런타임에서 개체 내의 DataTime에 연결된 DatePicker가 있는데, "1/1/0001 "이 표시되어 실제 달력을 사용하기 어렵게 만듭니다. DatePicker에 문자열을 바인딩 할 때 문제가 없었지만 DateTime으로 변경하면 문제가 발생했습니다. 어떻게 작동하는지 알려주세요.DatePicker 데이터 바인딩은 1/1/0001로 기본값을 설정합니다. WPF C#

XAML에서

내가 가진 :는 C#에서

<DatePicker Grid.Column="4" Grid.Row="9" Name="dueDateBox" VerticalAlignment="Center"> 
    <DatePicker.SelectedDate> 
     <Binding Path="DueDate" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay"> 
      <Binding.ValidationRules> 
       <my:DateRangeRule/> 
      </Binding.ValidationRules> 
     </Binding> 
    </DatePicker.SelectedDate> 
</DatePicker> 

내가 가진 : 이것은 내가 지금까지 무엇을 가지고

public DateTime DueDate 
{ 
    get { return dueDate; } 
    set 
    { 
     if (DueDate != null) || !DueDate.Equals(value)) 
     { 
      dueDate = value; 
      OnPropertyChanged("DueDate"); 
     } 
    } 
} 

가 나는 또한 종속성 속성 세트가 확실하지이있는 경우 부분 연주 :

public static readonly DependencyProperty DueDateProperty = 
     DependencyProperty.Register("DueDate", typeof(DateTime), 
     typeof(UpdateJobDialog), new PropertyMetadata(DateTime.Now)); 

답변

5

아마도 DateTime을 사용하는 것이 도움이 될까요? DateTime 대신 DateTime을 사용할 수 없으므로 null이 아닌 기본값 인 1/1/0001로 설정하면 익숙한 날짜 메시지를 선택하십시오.

public DateTime? DueDate 
{ 
    //Need to change the type of the private variable as well 
    get { return dueDate; } 
    set 
    { 
     if (DueDate != null) || !DueDate.Equals(value)) 
     { 
      dueDate = value; 
      OnPropertyChanged("DueDate"); 
     } 
    } 
} 
+0

, 감사합니다! – Erika

+0

필드가 null 인 경우 작동합니다. 필드가 null가 아닌 경우는 어떻게합니까? – Dani

1

당신은 당신의 DueDate 속성에 DueDateProperty 종속성 속성을 연결하지 않습니다. 이것을 대신 사용해보십시오.

public DateTime DueDate 
{ 
    get { return (DateTime)GetValue(DueDateProperty); } 
    set { SetValue(DueDateProperty, value); } 
} 
0

datepicker에 null 값이있는 바인딩 속성과 동일한 문제가 발생했습니다. 아무리 내가 시도한 값이 01/01/0001이었습니다. 문자열 특히 XAML의 날짜 선택기에 바인딩으로 드디어 두 번째 속성을 설정하여이 문제를 해결하고, 내 데이트가 null 인 경우 다음 나는이 ... (VB 코드)

그것을 해결

String.Empty로 반환 완벽하게 작동

XAML의 날짜 선택기 코드

Public Property ClosedDateDTP() As String 
    Get 
     If _closedDate = Nothing Then 
      Return String.Empty 
     Else 
      Return _closedDate.ToString 
     End If 
    End Get 
    Set(value As String) 
     If value = Nothing Then 
      _closedDate = Nothing 
     Else 
      _closedDate = CDate(value) 
     End If 
    End Set 
End Property 
...

 <DatePicker x:Name="dtpClosedDate" 
       SelectedDate="{Binding ClosedDateDTP, Mode=TwoWay}" 
       HorizontalAlignment="Left" 
       Margin="284,120,0,0" 
       VerticalAlignment="Top"> 
    </DatePicker> 
관련 문제