开发者

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 an开发者_Python百科other (bindable) property somewhere that I can use to get the same functionality as before?


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}"


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

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.


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.


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


Create a bindable variable type of your application i.e myApp to obtain all the variable defined in myApp or code completion:

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

And then use the variable.

height="{globals.height}"
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜