【发布时间】:2015-04-18 03:07:57
【问题描述】:
我有一个 wpf 应用程序,其中我有这个属性来绑定到 datepicker
public Nullable<System.DateTime> dpc_date_engagement { get; set; }
所以我添加了一个转换器:
public class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
return ((DateTime)value).ToShortDateString();
return String.Empty;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string strValue = value.ToString();
DateTime resultDateTime;
return DateTime.TryParse(strValue, out resultDateTime) ? resultDateTime : value;
}
}
在 XAML 文件中:
<DatePicker >
<DatePicker.Text>
<Binding Path="dpc_date_engagement" UpdateSourceTrigger="PropertyChanged">
<Binding.Converter>
<converter:DateConverter/>
</Binding.Converter>
</Binding>
</DatePicker.Text>
</DatePicker>
问题是当日期为空时,显示的文本是 1/1/0001。
- 如何修复我的代码以显示空字符串而不是 01/01/0001,以显示空值?
【问题讨论】:
-
转换器中的断点呢?
-
@YuriDorokhov 对于空值,它在方法转换中给我 value =
01/01/0001 00:00:00 -
您是否尝试过设置一种样式,在值为 null 时将文本设置为“”?
-
在值 x:null 上有一个数据触发器并将文本设置为 "".. 应该可以工作。不过我没试过。让我知道你是否实施
-
@LamloumiAfif 显然,您的 Nullable
不包含 null值,而是DateTime.MinValue(或默认构造的 DateTime)。如果它包含一个空值,则转换表达式(DateTime)value将引发异常。
标签: c# .net wpf datetime binding