كيفية الحصول على فليكس 3 مربع تحرير وسرد العرض إلى ضبط على أساس لا بد dataProvider محتويات وجود تغير ؟

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

سؤال

في فليكس 3, لقد قمت بإنشاء عنصر تحكم تحرير وسرد في MXML عنصر مشابهة لما يلي:

<mx:ComboBox id="comboBox" dataProvider="{_choices}" />

<mx:Script>
<![CDATA[
  import mx.collections.ArrayCollection;
  // etc...
  public function get choices():ArrayCollection { return _choices; }

  [Bindable]
  private var _choices:ArrayCollection =
    new ArrayCollection( [ { data: "ALL", label: "All" } ] );
  // etc...
]]>
</mx:Script>

</mx:HBox>

في الأصل MXML التطبيق ، أنا تعديل محتويات خيارات الإقامة:

myComponentId.choices.removeAll();
myComponentId.choices.addItem({data: "NY", label: "New York"});
myComponentId.choices.addItem({data: "CA", label: "California"});
// etc...

الملزمة هو العامل في مربع تحرير وسرد تلقائيا التقاط محتويات جديدة تضاف في وقت التشغيل ، ومع ذلك فإنه ليس من ضبط العرض.العرض الأولي من مربع تحرير وسرد واسعة بما يكفي فقط أن تظهر الأولي البند "كل" أعلن في المكون.ومع ذلك, أريد و يتوقع تحرير وسرد إلى إعادة حجم تلقائيا أثناء ملزمة أن تكون قادرة على إظهار "كاليفورنيا", ولكن الأمر ليس كذلك.

كيف يمكنني الحصول على مربع تحرير وسرد إلى تحديث العرض بعد إضافة جديدة أوسع التسميات إلى dataProvider?شكرا لك!

هل كانت مفيدة؟

المحلول

ربما تحتاج فقط إلى الاتصال invalidateProperties(), invalidateDisplayList(), invalidateSize(), أو مزيج من الثلاثة (أنا شيء من فليكس مبتدئ نفسي) ، لفرض تحديث المكون القياسات بعد تغيير موفر البيانات أو محتوياته.

myComponentId.invalidateSize();
myComponentId.invalidateDisplayList();
myComponentId.invalidateProperties();

نصائح أخرى

وأود أن أضيف واضع على choices و الاتصال validateNow() في مربع تحرير وسرد في نهاية واضع:

public function set choices(value:ArrayCollection):void
{
    _choices = value;

    comboBox.validateNow();
}

أنا واجهت نفس المشكلة و لم يكن أي من هذه عملت بالنسبة لي.تمكنت من حل هذا عن طريق إنشاء معالج الحدث

menuComboBox.addEventListener(ResizeEvent.RESIZE, updateListWidth);

الأسلوب يسمى في هذا الحدث ببساطة تغيير حجم القائمة المنسدلة.عرض المنشأة.

private function updateListWidth(event:ResizeEvent):void {
        menuComboBox.dropdown.width = menuComboBox.width;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top