Свойство Grid Object не работает при выборе поля со списком, но при нажатии прокрутки выпадающего списка или двойного щелчка по нему все в порядке. - PullRequest
1 голос
/ 22 сентября 2008

У меня есть таблица свойств в C #, загружающая объект 'PropertyAdapter' (базовая оболочка вокруг одного из моих объектов, отображающая соответствующие свойства с соответствующими тегами)

У меня есть TypeConverter в одном из свойств (DataType, который возвращает перечисление возможных значений), так как я хочу ограничить значения, доступные для сетки свойств, десятичными и целочисленными, с двумя методами следующим образом

public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
    return true;
}

public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
    return new StandardValuesCollection(new List<Constants.DataTypes>() { Constants.DataTypes.Decimal, Constants.DataTypes.Integer });
}

Это отображается так, как я хочу, в сетке свойств, и когда я дважды щелкаю по полю свойства в сетке свойств, он счастливо переключается между Integer и Decimal. Аналогичным образом я могу использовать колесо мыши для прокрутки параметров в поле со списком свойств.

Однако, если я использую поле свойства в качестве поля со списком и выбираю значение из раскрывающегося списка, я получаю стандартное окно ошибки сетки свойств с ошибкой:

Объект типа 'System.String' не может быть преобразованным в тип 'Pelion.PM3.Utils.Constants + Datatypes'.

Я предполагаю, что могу использовать переопределения Converter в конвертере типов, чтобы перехватить их и преобразовать в Enum of DataTypes, но почему бы сбой сетки свойств, когда я выбираю из выпадающего меню вместо двойного щелчка или «колесико мыши» в раскрывающемся списке?

1 Ответ

3 голосов
/ 22 сентября 2008

Когда выбрано из выпадающего списка, значение возвращается в виде строки. Я не уверен, почему это так, но я видел это раньше. Я думаю, что в основном двойной щелчок или прокрутка колесика мыши изменяет значения из коллекции значений, а выбор из выпадающего меню аналогичен редактированию значения поля в виде строки. Затем у вас есть преобразование значения из строки в значение перечисления.

...