2012-04-18 114 views
0

我將RadDatePicker綁定到viewModel的dateTime屬性。當數據庫中的屬性爲空時,我得到01/01/0001。如何以改變這種行爲,只是將日期字段爲空.. 例如:當未設置日期時,將RadDatePicker的默認值設置爲NULL

在數據庫===> experiation_date:NULL 在View(GUI)===> experation_date:01/01/0001

預期結果===> experation_date:{空白}

回答

1

設置SelectedDate爲null(而不是DBNull的):

RadDatePicker1.SelectedDate = null; 

和在XAML設置DateTimeWatermarkContent爲空字符串:

<telerik:RadDatePicker x:Name="RadDatePicker1" DateTimeWatermarkContent="" /> 
+0

我怎樣才能解決問題< Telerik的:DataFormDataField DataMemberBinding =「{結合到期日期> IM面臨同樣的問題,這是 – Chets 2012-04-18 11:56:44

+0

我得到這個問題的解決方案......我們只需要改變該屬性的數據類型是綁定用於視圖模型中的控件。 – Chets 2012-04-19 18:19:02

0

如果你是綁定不可爲​​空的日期時間變量,即(日期時間)來控制,然後它會使用默認01/01/001日期,而不是空.... 所以,如果你想默認值作爲空接只是將您所控制的變量的數據類型更改爲(DateTime?).....

DateTime ===> DateTime?

它工作正常...

謝謝。

1

並不總是可以將數據類型從DateTime更改爲DateTime?作爲DateTime對象實際上可能是必需的。 (一個典型的場景是,當你的控件綁定到一個DateTime類型的數據庫對象上,但是你正忙於在你的控件中創建一個新記錄,並且這個值在這個時候仍然是空的。)在這種情況下,有可能寫一個值轉換器,如Paulo在以下鏈接中所示:http://www.telerik.com/forums/default-date-value-01-01-001(請參閱他的EditDateConverter代碼,它的工作原樣...)我在此粘貼他的代碼以供參考,並且以後該鏈接將停止工作:

public class EditDateConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value != null && value.GetType().FullName == "System.DateTime") 
     { 
      var dt2 = (DateTime)value; 
      if (dt2 != DateTime.MinValue) 
       return value; 
     } 
     DateTime dt; 
     if (!DateTime.TryParse(value as string, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt)) 
      return dt != DateTime.MinValue ? value : null; 
     return dt; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value == null && targetType.FullName == "System.DateTime") 
      return DateTime.MinValue; 
     return value; 
    } 
} 

要在RadDatePicker的綁定中使用它,只需將轉換器作爲資源添加到XAML中,然後將轉換器添加到綁定中即可。

在您的XAML命名空間聲明,你必須添加轉換器的命名空間,例如:

xmlns:converters="clr-namespace:MyNamespace.Converters" 

,然後在XAML的資源節中,你將有:

<UserControl.Resources> 
    <converters:EditDateConverter x:Name="NullableDate"/> 
</UserControl.Resources> 

然後您可以簡單地將以下行添加到控件上的綁定上:

Converter={StaticResource NullableDate} 

如果您現在有空日期,則控件將顯示水印(例如, 「輸入日期」)而不是01/01/0001。

相關問題