Связывание данных не сможет обнаружить назначения для "topLevelApplication"

Я переношу приложение из Flex 3 в Flex 4. В некоторых случаях есть всплывающие окна, ширина и высота которых привязаны к ширине и высоте приложения.

width="{Application.application.width - 24}" 
height="{Application.application.height - 32}"

Application.application устарела в 4.0. поэтому я заменил это на

width="{FlexGlobals.topLevelApplication.width - 24}" 
height="{FlexGlobals.topLevelApplication.height - 32}"

Теперь компилятор дает предупреждение о том, что привязки данных не могут быть обнаружены для topLevelApplication.

Связывание данных не сможет обнаруживать присвоения "TopLevelApplication"

Мой вопрос: есть ли другое (связанное) свойство где-то, что я могу использовать, чтобы получить ту же функциональность, что и раньше?

Ответ 1

Просто создайте переменную типа объекта и сделайте ее связанной:

[Bindable]
private var application:Object = FlexGlobals.topLevelApplication;

И затем используйте переменную.

height="{application.height}"

Ответ 2

Если вы используете {this.screen.height}, ваши предупреждения должны исчезнуть.

Тим

Ответ 3

Это должно работать с приложением:

height="{(FlexGlobals.topLevelApplication as Application).height - 32}"

Причина, по которой он не работает с вашим текущим кодом, состоит в том, что FlexGlobals.topLevelApplication вводится как объект.

Ответ 4

Я застрял в течение получаса и узнал, что Bindable работает только с капиталом "B", я сделал это, и он решил мою проблему.

Итак, вместо bindable просто напишите Bindable, поскольку упомянутый класс bindable.Bindable.

Ответ 5

Я боролся с аналогичным предупреждением, но вместо проблемы с объектом (которая решена с префиксом [Bindable]) я использовал VBox. Мне нужно было изменить источник изображения в зависимости от того, сколько у меня дочерних элементов моего vbox. Таким образом, решение этой проблемы использует только "this" lol. вот пример:

<mx:Image width="24" height="24" source="{this.vbBox1.getChildren().length>1 ?    'assets/icons/forwardDisable.png':'assets/icons/forward.png'}"/>

Если вы не используете "this", IDE покажет вам предупреждение, подобное тому, которое у вас есть с объектом. Надеюсь, это поможет другим!

С наилучшими пожеланиями