InvalidCastException в конвертере - PullRequest
1 голос
/ 11 февраля 2010

Это мой класс, который реализует IValueConverter:

[ValueConversion(typeof(int), typeof(Priority))]
public class PriorityConverter : IValueConverter
{

    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (Priority) (int) value;
    }

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

    #endregion
}

Кажется, что эта строка кода вызывает исключение InvalidCastException:

return (Priority) (int) value;

(Приоритетом является перечисление). Я ставлю точку останова в начале метода, и значение «value» равно int: 4, поэтому я не знаю, почему вызывается это исключение. Вот ресурсы (где app_data = "clr-namespace: AssignmentOrganizer.App_Data"):

<app_data:PriorityConverter x:Key="PriorityConverter" />
<app_data:KindConverter x:Key="KindConverter" />

Вот реализация:

<gridview:GridViewDataColumn Header="Priority" Width="100" DataMemberBinding="{Binding Priority, Converter={StaticResource PriorityConverter}}" />
<gridview:GridViewDataColumn Header="Kind" Width="100" DataMemberBinding="{Binding Kind, Converter={StaticResource KindConverter}}" />

1 Ответ

1 голос
/ 11 февраля 2010

Как обсуждалось в комментариях к вопросу, это происходит потому, что на самом деле в преобразователь значений передается байт, а не Int32.Распаковка всегда должна быть точного типа;чтобы определить этот точный тип, стоит проверить value.GetType (). Name, используя Debug.WriteLine или окно Immediate.

...