我將RadDatePicker綁定到viewModel的dateTime屬性。當數據庫中的屬性爲空時,我得到01/01/0001。如何以改變這種行爲,只是將日期字段爲空.. 例如:當未設置日期時,將RadDatePicker的默認值設置爲NULL
在數據庫===> experiation_date:NULL 在View(GUI)===> experation_date:01/01/0001
預期結果===> experation_date:{空白}
我將RadDatePicker綁定到viewModel的dateTime屬性。當數據庫中的屬性爲空時,我得到01/01/0001。如何以改變這種行爲,只是將日期字段爲空.. 例如:當未設置日期時,將RadDatePicker的默認值設置爲NULL
在數據庫===> experiation_date:NULL 在View(GUI)===> experation_date:01/01/0001
預期結果===> experation_date:{空白}
設置SelectedDate爲null(而不是DBNull的):
RadDatePicker1.SelectedDate = null;
和在XAML設置DateTimeWatermarkContent爲空字符串:
<telerik:RadDatePicker x:Name="RadDatePicker1" DateTimeWatermarkContent="" />
如果你是綁定不可爲空的日期時間變量,即(日期時間)來控制,然後它會使用默認01/01/001日期,而不是空.... 所以,如果你想默認值作爲空接只是將您所控制的變量的數據類型更改爲(DateTime?).....
DateTime ===> DateTime?
它工作正常...
謝謝。
並不總是可以將數據類型從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。
我怎樣才能解決問題< Telerik的:DataFormDataField DataMemberBinding =「{結合到期日期> IM面臨同樣的問題,這是 – Chets 2012-04-18 11:56:44
我得到這個問題的解決方案......我們只需要改變該屬性的數據類型是綁定用於視圖模型中的控件。 –
Chets
2012-04-19 18:19:02