예제 #1
0
        void Sort <T>(T rootItem, Comparison <TreeViewItem> func, Comparison <int> intfunc) where T : TreeViewItem
        {
            rootItem.children.Sort(func);
            Stack <TreeViewItem> itemstack = StackPool <TreeViewItem> .Get();

            foreach (var child in rootItem.children)
            {
                itemstack.Push(child);
            }

            while (itemstack.Count > 0)
            {
                var item = itemstack.Pop();
                if (_treeView.IsExpanded(item.id) && item.children.Count > 0 && item.children[0] != null)
                {
                    foreach (var child in item.children)
                    {
                        itemstack.Push(child);
                    }
                    item.children.Sort(func);
                }
            }

            StackPool <TreeViewItem> .Release(itemstack);

            _model.Sort(intfunc);
        }