2010-05-17 10 views
0

Contexte:
        que je fais un travail de l'interface utilisateur où j'autorise l'utilisateur à ajouter et programatically redimensionner les contrôles sur une toile.Comment redimensionner la liste déroulante d'une liste déroulante avec la zone de liste déroulante?

Problème:
        Lors du redimensionnement d'une zone de liste déroulante dans le menu déroulant AS reste à la même largeur que la première fois qu'il tombe. L'utilisateur place ainsi une zone de liste déroulante sur la page, clique sur la flèche vers le bas, voit les options, sélectionne une option ou clique sur la flèche vers le bas pour la fermer, redimensionne la largeur de la liste déroulante, clique sur la flèche vers le bas. Maintenant, la liste déroulante est la même largeur que l'original. Avoir essayé des choses simples comme définir la largeur de la liste déroulante spécifiquement et invalider la liste d'affichage, mais cela ne fonctionne toujours pas.

Exemple:
        Exemple de code en cours

Répondre

0

Lorsque vous recadrez mon code jusqu'à un exemple que je résolu mon problème. Une zone de liste déroulante possède une propriété dropdownWidth. J'essayais de mettre ce myComboBox.dropdownWidth = newWidth, ce qui ne fonctionne pas (pas tout à fait sûr pourquoi, n'a pas creusé dans le SDK). Cependant, si je change mon code en myComboBox.dropdown.width = newWidth, il va en fait dans l'élément dropdown et le redimensionne directement, ce qui fonctionne.

+0

Je suis assez sûr que la propriété comboBox.dropdownWidth ne change pas la largeur "live". Le comboBox.dropdown.width devrait cependant; ce qui est cohérent avec ce que vous semblez vivre. – JeffryHouser

+0

'myComboBox.dropdownWidth = newWidth' a fonctionné pour moi alors que' myComboBox.dropdown.width = newWidth' n'a pas ... Flex 3.6 sdk – Kukeltje

0

La commande comboBox.dropdown.width n'a pas fonctionné pour moi. Je devais utiliser

comboBox.dropdown.percentWidth = 100;

Il semble fonctionner sans avoir à appeler invalidateSize()

0

Dans la zone de liste déroulante, redéfinissant la set dataProvider et effectuer ce qui suit a semblé fonctionner, car le champ dataProvider est lié à l'événement collectionChange.

ComboBox.calculatePreferredSizeFromData(count:int):Object

override public function set dataProvider(value:Object):void { 
    super.dataProvider = value; 

    var size:Object = calculatePreferredSizeFromData(dataProvider.length); 

    this.dropdownWidth = size.width; 
    this.dropdown.width = this.dropdownWidth; 
    this.invalidateSize(); 
}