我一直试图让这项工作暂时没有成功 我有一个转换器可以在页面上打印漂亮的日期。转换功能如下;
class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
Nullable<int> _date = value as Nullable<int>;
if (!_date.HasValue)
return DependencyProperty.UnsetValue;
if (!String.IsNullOrEmpty(parameter as String))
{
if (parameter.Equals("EDITED"))
return "edited " + UtilityFunctions.formatUnixTime(_date.Value);
}
return UtilityFunctions.formatUnixTime(_date.Value);
}
}
在XAML部分中,我通过将属性的属性传递给它来使用此转换器。
<TextBlock Text="{Binding Wiki.EditDate, Converter={StaticResource DateConverter}, ConverterParameter=EDITED}" />
我的ModelView扩展了BindableBase,每当我更新Wiki属性时,我都会调用SetProperty,而后者则调用OnPropertyChanged来获取Wiki属性。
如果我尝试显示没有转换器的日期,它可以正常工作。
<TextBlock Text="{Binding Wiki.EditDate}" />
我在我的项目的其他部分使用此转换器,所以我认为这不是问题的原因。
这个问题的原因可能是什么?
感谢您的帮助...
答案 0 :(得分:0)
正如在讨论和调试中发现的那样 - 问题是传递给转换器的值是错误的 - "2014-06-03 00:56:21"
。
此值不能转换为 int ,因为您使用的是as
:
Nullable<int> _date = value as Nullable<int>;
不会抛出异常。您有null
( as 不会抛出InvalidCastException)而不是异常。
如果你要使用演员:
Nullable<int> _date = (Nullable<int>)value;
那么你会有一个例外。您肯定会在SO上找到更多信息 - for example this answer。