J'ai trouvé un moyen plus facile de changer le moteur de rendu de l'élément sélectionné. Celui-ci ne fonctionne que si votre élément hérite de la classe TextInput
, dans Flex 4.0 ou supérieur.
Dans Flex v4.5, en ComboBase.createChildren
à la ligne 1177, vous trouverez que la classe définissable pour le textInput
peut être transmis en utilisant le style clé textInputClass
:
// Mechanism to use MXFTETextInput.
var textInputClass:Class = getStyle("textInputClass");
if (!textInputClass || FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0)
{
textInput = new TextInput();
}
else
{
textInput = new textInputClass();
}
changer juste la valeur de cette clé le constructeur de votre combo et maintenant vous avez votre propre moteur de rendu pour le selectedItem
.
public function ComboAvailableProfessor()
{
super();
itemRenderer = new ClassFactory(ProfessorAvailableListItemRenderer);
setStyle('textInputClass', ProfessorAvailableSelectedListItemRenderer);
}
Enfin, vous devez lier la propriété data
à la propriété selectedItem
dans votre combo afin d'obtenir des données affichées.
override protected function createChildren():void
{
super.createChildren();
BindingUtils.bindProperty(textInput, 'data', this, 'selectedItem', true);
}
pouvez-vous me aider: // supprimer la valeur par défaut textInput \t \t \t \t \t removeChild (textInput); Coercition implicite d'une valeur de type mx.core: ITextInput à un type non apparenté flash.display: DisplayObject. –