Ошибка при встраивании иконок в узел PopUpMenuButton
Я пытаюсь создать popupmenubutton, с изображениями и меткой в качестве узлов. Но я не могу встраивать иконки. Это дает мне и ошибку (приведенную ниже). Ты один лейбл работает нормально.
<mx:PopUpMenuButton id="menu_file" labelField="@label" itemClick="{menuClickHandler(event);}" visible="false"
height="20" left="0" top="0" width="15" alpha="0.5" cornerRadius="5" useHandCursor="true"
toolTip="Delete, Move, Rename or Modify other properties">
<mx:dataProvider>
<mx:XMLList>
<node label="{LABEL_DELETE}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
<node label="{LABEL_DOWNLOAD}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
<node label="{LABEL_MOVE}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
<node label="{LABEL_RENAME}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
<node label="{LABEL_SET_PRIVACY}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
</mx:XMLList>
</mx:dataProvider>
Это дает мне ошибку: инициализатор для 'Embed': нераспознанная директива времени компиляции.
Плз может кто-нибудь сказать мне, что я делаю не так здесь.
Спасибо Zeeshan
2 ответа
Обычно я создаю класс для каждого нужного мне значка.
[Embed("img/Print.png")]
public const printIcon : Class;
и чем использовать этот класс в качестве значка
<mx:XMLList>
<menuitem label="File">
<menuitem label="Print" icon="printIcon"/>
<menuitem label="Logout" icon="logoutIcon" />
<menuitem label="Close" icon="closeIcon"/>
</menuitem>
<menuitem label="Modify">
<menuitem label="Preferences" icon="toolIcon" />
</menuitem>
<menuitem label="Help">
<menuitem label="About Us" icon="infoIcon"/>
</menuitem>
</mx:XMLList>
Я думаю, что проблема заключается в том, что написанный код пытается внедрить изображение в качестве значения icon
атрибут в вашем узле - значением атрибута может быть только строка.
Не зная ничего о вашем приложении, я бы сказал, что вам придется переписать ваш dataProvider следующим образом:
<mx:dataProvider>
<mx:XMLList>
<node label="{LABEL_DELETE}" icon="assets/FileManager/images/cancel2.png"/>
<node label="{LABEL_DOWNLOAD}" icon="assets/FileManager/images/cancel2.png"/>
<node label="{LABEL_MOVE}" icon="assets/FileManager/images/cancel2.png"/>
<node label="{LABEL_RENAME}" icon="assets/FileManager/images/cancel2.png"/>
<node label="{LABEL_SET_PRIVACY}" icon="assets/FileManager/images/cancel2.png"/>
</mx:XMLList>
</mx:dataProvider>
Очевидно, у вас не будет возможности встраивать изображения значков таким образом, но, может быть, вам это не нужно? Я не уверен на 100%, но я думаю, что dataProvider применяется во время выполнения, что означало бы, что при таком подходе невозможно внедрить изображения значков.
Если я ошибаюсь, вы можете написать средство визуализации элементов, которое будет смотреть на значение icon
атрибут и вставьте изображение, найденное по этому пути.
Если я прав, вы можете написать пользовательский рендерер элементов, который встраивает все изображения значков, а затем отображает правильный значок в зависимости от значения label
или какой-либо другой идентификационный атрибут.