调用OnPropertyChanged后,Converter无法正常工作

时间:2014-12-20 16:18:21

标签: xaml windows-phone windows-phone-8.1 ivalueconverter

我一直试图让这项工作暂时没有成功 我有一个转换器可以在页面上打印漂亮的日期。转换功能如下;

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}" />

我在我的项目的其他部分使用此转换器,所以我认为这不是问题的原因。

这个问题的原因可能是什么?

感谢您的帮助...

1 个答案:

答案 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