Flex - Bindung ViewStack-selectedChild-Eigenschaft, Mit einem Stringwert
Den beigefügten code-Beispiel (pseudo-code) kompiliert, wirft aber dieser Run-Time Error:
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/getChildIndex()
at mx.core::Container/getChildIndex()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:2409]
at mx.containers::ViewStack/set selectedChild()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\containers\ViewStack.as:557]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
private var targetViewName:String = "content";
]]>
</mx:Script>
<mx:ViewStack id="viewStack" width="100%" height="100%"
selectedChild="{Container(viewStack.getChildByName(targetViewName))}">
<mx:Panel id="welcome" width="100%" height="100%" />
<mx:Panel id="content" width="100%" height="100%" />
</mx:ViewStack>
</mx:Application>
Gibt es eine Möglichkeit, ich kann diese Arbeit ohne eine Funktion aufzurufen, um die selectedChild?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn selectedChild wird ausgelöst, der viewStack hat keine Kinder hinzu, so wirft es eine NullPointerException:
Die folgenden arbeiten:
so probiert:
/Niels
Sorry, /Niels, das nicht funktioniert. Versuchen Sie, kompilieren Sie diesen code, und Sie werden sehen, die selectedChild ändern sich nicht, (auch erhalten Sie eine Compilerwarnung):
Meine Vermutung ist, dass dies nicht funktionieren wird, weil die Bindung ausgewertet, bei der Initialisierung, wenn zu dieser Zeit der viewstack-Kinder wurden noch nicht erstellt. Auch mit der Einstellung der creationPolicy-um "alle" das problem weiterhin Auftritt.
Werden Sie einrichten müssen, um eine Bindung an die targetViewName, wenn der viewstack wird erstellt (und vielleicht auch seine Kinder).
Sie möchten die selectedChild-Eigenschaft, sobald das Ziel wird in der Liste anzeigen. Versuchen Sie dies:
Wenn Sie wirklich wollen, zu binden selectedChild, dann erstellen Sie eine bindbare Funktion zurückgibt, die das Feld, das Sie auswählen möchten, sondern nur, wenn es ein Kind der viewStack.
diese bindet ein string var ich bekomme eine Warnung, aber es funktioniert