Konwerter dziedziczący po IMultiValueConverter nie działa dla tych samych wartości dla których działa IValueConverter

0

Witam, nie wiedziałem jak zbytnio streścić temat, ale mam nadzieję że poniższy kod wyjaśni mój problem.
Chcę użyć konwertera by zsumować dwie wartości atrybutów BeginTime w animacjach,dany jest inny konwerter którego używam:

public class Duration2TimeSpanConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return ((Duration)value).TimeSpan;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

I ten konwerter działa bez zarzutu, natomiast gdy rozbuduję mój kod by pobierał dwie różne wartości:

 public class DurationSumConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
           return ((Duration)values[0]).TimeSpan;
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Celowo pominąłem sumowanie by zobrazować problem.
Stosuję powyższy konwerter za pomocą znacznika <MultiBinding> tak jak to zawsze robiłem.
Jeśli podbinduję tylko jedną wartość, taką samą jak dla pierwszego konwertera, po wczytaniu aplikacji czeka mnie System.InvalidCastException bez żadnych szczegółów.
Nie mam już pojęcia co może być nie tak.

0

Skoro otrzymujesz InvalidCastException to znaczy, że ma problem z konwersją, a jeżeli ma problem z konwersją to pewnie mu złą wartość przekazujesz do tej funkcji Convert. Ustaw sobie breakpointa i posprawdzaj lokalne zmienne w tej funkcji, bo ten kod co wrzuciłeś to wygląda ok. No chyba że problem jest w części kodu, której nie zamieściłeś

1 użytkowników online, w tym zalogowanych: 0, gości: 1