フレックスの皆さんに質問です。ツリー内のアイテムの深さ/レベルに応じて、mx:Tree で複数のアイテム レンダラーを使用するにはどうすればよいですか? 例えば。第1レベルのアイテムにはボタン付きのラベルを使用し、第2レベルのアイテムにはコンボボックスを使用します。
これはどういうわけか可能ですか?
フレックスの皆さんに質問です。ツリー内のアイテムの深さ/レベルに応じて、mx:Tree で複数のアイテム レンダラーを使用するにはどうすればよいですか? 例えば。第1レベルのアイテムにはボタン付きのラベルを使用し、第2レベルのアイテムにはコンボボックスを使用します。
これはどういうわけか可能ですか?
解決策は次のとおりです。拡張ツリーでは、関数 getItemRendererFactory(data:Object):IFactory をオーバーライドし、必要なロジックを実行して適切な itemRenderer を選択します。
これが他の誰かにも役立つことを願っています
その条件付きロジックは、単一の itemrenderer に実装する必要があります。複数のレンダラーを設定することはできません。
これをどのように実装できるかについてのレシピは次のとおりです。
override public function set data(value:Object):void
{
if(value != null)
{
super.data = value;
if(TreeListData(super.listData).hasChildren)
{
setStyle("color", 0x660099);
setStyle("fontWeight", 'bold');
}
else
{
setStyle("color", 0x000000);
setStyle("fontWeight", 'normal');
}
}
}
その「if」ステートメントは、内部ノードがあるかどうかを示します。データ プロバイダーを生成するときに、追加のプロパティを指定することもできます。