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

StackOverflow https://stackoverflow.com/questions/113644

  •  02-07-2019
  •  | 
  •  

Вопрос

У меня есть сетка свойств на 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 });
}

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

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

Объект типа 'System.string' не может быть преобразован в тип 'pelion.pm3.utils.constants+dataTypes'.

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top