数据绑定将无法检测“topLevelApplication”的分配

时间:2010-12-21 13:47:28

标签: flex actionscript-3 flex4

我正在将应用程序从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中”

我的问题是:我可以使用其他(可绑定)属性来获得与以前相同的功能吗?

6 个答案:

答案 0 :(得分:21)

只需创建一个object类型的变量并使其可绑定:

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

然后使用变量。

height="{application.height}"

答案 1 :(得分:3)

如果您使用{this.screen.height},您的警告就会消失。

答案 2 :(得分:2)

这应该适合演员:

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

它不能使用您当前代码的原因是因为FlexGlobals.topLevelApplication被输入为Object。

答案 3 :(得分:2)

我被困了半个小时,发现Bindable只适用于首都' B'我做到了,它解决了我的问题。

因此,代替可绑定只需编写Bindable,因为引用的类是bindable.Bindable

答案 4 :(得分:1)

我正在努力解决类似的警告,但是我没有使用VBox来代替对象问题(用[Bindable]前缀解决)。我需要根据我的vbox有多少孩子来更改图像的来源。所以解决这个问题的方法只是使用“这个”lol。这是一个例子:

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

如果您不使用“this”,IDE将向您显示类似于您对该对象的警告。我希望它可以帮助别人!

最好的问候

答案 5 :(得分:0)

创建应用程序的可绑定变量类型,即myApp,以获取myApp中定义的所有变量或代码完成:

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

然后使用变量。

height="{globals.height}"