Propriedade grade do objeto não na seleção caixa de combinação, mas OK quando combobox rolada ou clicar duas vezes

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

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma propriedade de grade em C #, carregando um objeto 'PropertyAdapter' (um wrapper básico em torno de um dos meus objetos exibem propriedades relevantes com as tags apropriadas)

Eu tenho um TypeConverter em uma das propriedades (DataType, que retorna uma enumeração de valores possíveis) como eu querem limitar os valores disponíveis para a grade propriedade para Decimal e Integer, com os 2 métodos da seguinte forma

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 });
}

Este está exibindo apenas como eu quero na grade de propriedade, e quando eu duplo clique no campo de propriedade na grade de propriedade, felizmente alterna entre Integer e Decimal. Do mesmo modo que eu possa usar a roda do mouse para percorrer as opções na propriedade arquivados combobox.

Se eu entanto usar o campo de propriedade como uma caixa de combinação e selecione um valor a partir do drop-down, fico com a caixa de erro grade de propriedade padrão com o erro:

Objeto do tipo 'System' não pode ser convertido no tipo 'Pelion.PM3.Utils.Constants + DataTypes'.

Estou assumindo que eu posso usar as substituições Converter no conversor Tipo de prender estes e convertê-los para um Enum de tipos de dados, mas por que a grade de propriedade falhar quando eu selecionar a partir do drop-down em vez de um clique duplo ou 'mouseewheeling 'on the drop-down?

Foi útil?

Solução

Quando selecionado na caixa de combinação suspensa, o valor é retornado como string. Não estou certo por que isso acontece, mas eu já vi em acontecer antes. Eu acho que, basicamente duplo clique ou rolagem da roda do mouse altera os valores da coleção de valor, ao selecionar a partir do drop-down é como editar o valor do campo como uma string. Então, você tem a converter o valor de uma string com o valor enum.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top