Я работаю (за свои грехи) над проектом Flex 3.3, который, к сожалению, не может быть обновлен до более новой версии SDK на данном этапе, и столкнулся с проблемой с пользовательским классом иерархического дерева (подклассом mx.controls.Tree
), который мы Используешь. Извините за орфографию; предыдущий разработчик боялся словарей ...
public class HierachyTree extends Tree
public function HierachyTree()
{
super();
iconFunction = itemIconFunc;
// etc.
}
Я использую решение где-то между этими двумя методами (в основном, реализуем ITreeDataDescriptor
) для добавления фильтрации живого текста к компоненту, и пока он работает :
public class HierachyTreeFilteredDataDescriptor implements ITreeDataDescriptor
{
private var filter:Function
public function HierachyTreeFilteredDataDescriptor(filterFunction:Function)
{
this.filter = filterFunction;
}
public function getChildren(node:Object, model:Object=null):ICollectionView
{
var children:ArrayCollection = new ArrayCollection([]);
// Filter the children...
return children;
}
public function hasChildren(node:Object, model:Object=null):Boolean
{
var treeItem:Object = node as Object;
if (! (treeItem is ScenarioMeta)) return (treeItem as Object).children.length > 0;
else return false;
}
Проблема в том, что (с tree:HierachyTree
) ни tree.maxVerticalScrollPosition
, ни защищенное свойство tree.verticalScrollBar.maxScrollPosition
не обновляются при изменении строки поиска.
Я пытался звонить invalidateList()
и invalidateDisplayList()
на tree
- и звонить invalidateDisplayList()
и invalidateSize()
на tree.verticalScrollBar
- безрезультатно.
Есть идеи?