Гибкий выпадающий список элементов, вероятно, ошибка

#apache-flex #actionscript-3 #drop-down-menu #itemrenderer

#apache-flex #actionscript-3 #выпадающее меню #itemrenderer

Вопрос:

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

 <s:DropDownList id="cbX" x="140" y="281" width="276" itemRenderer="comboItemRenderer" labelField="@text">
    <mx:XMLListCollection>
        <fx:XMLList>
            <node text="1" />
            <node text="2" />
            <node text="3" />
        </fx:XMLList>
    </mx:XMLListCollection>
</s:DropDownList>
  

средство визуализации элементов :

 <?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                autoDrawBackground="true">

    <s:Label text="{data}"/>

</s:ItemRenderer>
  

Это ошибка, или я делаю это неправильно?

Ответ №1:

Попробуйте использовать:

 <?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                autoDrawBackground="true">

    <s:Label text="{label}"/>

</s:ItemRenderer>
  

Данные для средства визуализации по-прежнему остаются данными. Но если вы используете labelField , вы полагаетесь на процедуру вычисления меток списка. Так что просто отобразите это.

Комментарии:

1. Ради бога, где написано все эти вещи. Я чувствую, что прилетел из другой галактики : ( большое вам спасибо. это помогает, но я действительно не понимаю, как узнать об этих отношениях в данных…

2. По правде говоря labelField , это способ не использовать средство визуализации пользовательских элементов для отображения некоторого поля вашего элемента поставщика данных. В вашем случае использование label в renderer аналогично использованию data.@text . Поэтому, если ваш рендеринг такой же, как стандартный (как в вашем случае), просто используйте стандартный рендеринг по умолчанию. Если вы собираетесь использовать какой-либо расширенный инструмент визуализации элементов, вы можете удалить labelField из списка и переместить всю логику внутри средства визуализации с помощью data .