Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Data binding will not be able to detect assignments to "topLevelApplication"

I am migrating an application from Flex 3 to Flex 4. In some cases there are popup windows of which the width and height is bound to the application width and height.

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

Application.application is deprecated in 4.0. so I have replaced this with

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

Now the compiler gives the warning that data bindings cannot be detected for topLevelApplication.

Data binding will not be able to detect assignments to "topLevelApplication"

My question is: Is there another (bindable) property somewhere that I can use to get the same functionality as before?

like image 541
Bocaxica Avatar asked Dec 21 '10 13:12

Bocaxica


5 Answers

Just create a variable of type object and make it bindable :

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

And then use the variable.

height="{application.height}"
like image 185
Mahima Avatar answered Oct 28 '22 12:10

Mahima


If you use {this.screen.height} your warnings should go away.

Tim

like image 25
Tim Avatar answered Oct 28 '22 11:10

Tim


This should work with a cast:

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

The reason why it isn't working with your current code is because FlexGlobals.topLevelApplication is typed as an Object.

like image 31
James Ward Avatar answered Oct 28 '22 13:10

James Ward


I was stuck for half an hour and found out that Bindable only works with a capital 'B', I did it and it solved my problem.

So, instead of bindable just write Bindable as the referred class is bindable.Bindable.

like image 20
Nilesh Mahant Avatar answered Oct 28 '22 11:10

Nilesh Mahant


i was struggling with a similar warning, but instead of an object problem (wich is solved with the [Bindable] prefix) i was using a VBox. I needed to change the source of an image depending on how many childs my vbox has. So the solution to this is only using "this" lol. here's an example:

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

If you dont use "this" the IDE will show you a warning similar to the one that you have with the object. I hope it helps others!

Best Regards

like image 39
Gabriel Figox Vargas Fierro Avatar answered Oct 28 '22 13:10

Gabriel Figox Vargas Fierro