Привязка данных не сможет обнаружить назначения для "topLevelApplication" - PullRequest
11 голосов
/ 21 декабря 2010

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

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

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

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

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

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

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

Ответы [ 6 ]

21 голосов
/ 11 января 2011

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

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

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

height="{application.height}"
3 голосов
/ 30 декабря 2013

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

Тим

2 голосов
/ 29 апреля 2012

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

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

2 голосов
/ 21 декабря 2010

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

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

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

1 голос
/ 24 сентября 2013

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

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

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

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

0 голосов
/ 30 марта 2018

Создайте привязываемый тип переменной вашего приложения, т.е. myApp, чтобы получить все переменные, определенные в myApp или дополнении кода:

[Bindable]
private var globals:myApp = FlexGlobals.topLevelApplication as myApp;

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

height="{globals.height}"
...