私はSparkのFlex開発には新しく、コンポーネントを構築する最良の方法を明確にしたいと考えました。私ならば、それは正しい数を示していものの、この結合式は、仕事には表示されませんFlexからのビューへのデータバインディング(Spark)
public class MyComponentView extends SkinnableComponent
{
public var selectedIndex:int = 0;
}
<s:Skin ...>
<mx:ViewStack selectedIndex="{hostComponent.selectedIndex}">
....
</mx:ViewStack>
</s:Skin ...>
:
は、私は、以前のViewStackの選択されたインデックスを設定するバインディング式を使用しようとしましたそのバインディング式を次のように移動します。
この作業を取得するためには、私は、このようにコードを変更:
public class MyComponentView extends SkinnableComponent
{
[SkinPart(required = "true")]
public var myStack:ViewStack;
private var _selectedIndex:int = 0;
private var _indexChanged:Boolean;
public function set selectedHistoryIndex(value:int):void
{
_selectedIndex = value;
_indexChanged = true;
invalidateProperties();
}
override protected function partAdded(partName:String, instance:Object):void
{
super.partAdded(partName, instance);
switch (instance)
{
case myStack:
_indexChanged = true;
invalidateProperties();
break;
}
}
override protected function commitProperties():void
{
super.commitProperties();
if (_indexChanged && myStack)
{
_indexChanged = false;
myStack.selectedIndex = _selectedIndex;
}
}
}
<s:Skin ...>
<mx:ViewStack id="myStack">
....
</mx:ViewStack>
</s:Skin ...>
は、これは私がはそれを行うためにを意味してる方法ですか?
私は今、最初のインスタンスでは機能していなかった理由は、タイミングの問題だと思っています - selectedIndexはdataproviderの前に設定されています。 – ThisRestlessPilgrim