[英]How to leave DateTimePicker object blank (Select a date) on load when DateTime is null (01/01/0001) but populate when there is a value?
我試圖獲取一個DateTimePicker對象,當它沒有從數據庫中獲取任何日期時,使用默認文本(選擇日期)進行填充。 如果數據庫中有日期,則該字段將填充該日期。
我把在SelectedDate選項上有兩種方式綁定到隱藏代碼中的DateTime屬性的代碼打包了。 它可以正常工作,並使用01/01/0001填充字段,因為那是DateTime對象的空值。 我試圖將其更改為OneWayToSource,如果日期大於01/01/0001,則僅綁定日期,但是如果沒有日期,它將在對象周圍放置一個紅色框。
有什么建議嗎?
感謝大家的幫助! 這是我找到的解決方案。
[ValueConversion(typeof(DateTime), typeof(DateTime))]
class DateTimeNullConverter: IValueConverter
{
public object Convert (object value, Type targetType, object parameter, Culture culture)
{
if (value != null)
{
DateTime dateTime = (DateTime)value;
if (dateTime.Year.ToString == "1")
return null;
else
return dateTime;
}
else
{
return null;
}
}
public object ConvertBack (object value, Type targetType, object parameter, Culture culture)
{
DateTime convertDateTime;
if (value == null)
{
convertDateTime = new DateTime();
}
else
{
convertDateTime = (DateTime) value;
}
return convertDateTime;
}
}
創建一個綁定到相同控件的DateBlankConverter轉換器:
<DatePicker x:Name="DatePickerInstance"
Visibility="{Binding ElementName=DatePickerInstance,
Converter={StaticResource DateBlankConverter}, ConverterParameter={Binding Date}}"/>
並在轉換器內部檢查日期是否為空以隱藏或顯示DatePicker,或更改所需的屬性。
您可以嘗試在屬性的設置器和獲取器中使用一些代碼
private DateTime? _date;
public DateTime? Date
{
get
{
if (null == _date)
{
//Set some initial value
//or just return some default value without setting the property
}
return _date;
}
set
{
if (value != _date)
{
_date = value;
this.OnPropertyChanged("Date");
}
}
}
感謝大家的幫助! 這是我找到的解決方案。
[ValueConversion(typeof(DateTime), typeof(DateTime))]
class DateTimeNullConverter: IValueConverter
{
public object Convert (object value, Type targetType, object parameter, Culture culture)
{
if (value != null)
{
DateTime dateTime = (DateTime)value;
if (dateTime.Year.ToString == "1")
return null;
else
return dateTime;
}
else
{
return null;
}
}
public object ConvertBack (object value, Type targetType, object parameter, Culture culture)
{
DateTime convertDateTime;
if (value == null)
{
convertDateTime = new DateTime();
}
else
{
convertDateTime = (DateTime) value;
}
return convertDateTime;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.