Exemplo n.º 1
0
        public IdentityTreeViewModel(IIdentityTreeManager <T> identityTreeManager)
        {
            treeManager         = identityTreeManager ?? throw new ArgumentNullException(nameof(identityTreeManager) + " can not be null");
            modelDictionary     = new Dictionary <string, T>();
            viewModelDictionary = new Dictionary <string, IIdentityTreeItemViewModel <T> >();
            allNodes            = new ObservableCollection <IIdentityTreeItemViewModel <T> >();

            AllNodes = new ListCollectionView(allNodes)
            {
                CustomSort = new TreeItemNameComparer <T>()
            };
            RootNodes = new ListCollectionView(allNodes)
            {
                Filter          = new Predicate <object>(RootNodeFilter),
                IsLiveFiltering = true,
                CustomSort      = new TreeItemNameComparer <T>()
            };
            RootNodes.LiveFilteringProperties.Add(nameof(IIdentityTreeItemViewModel <T> .Parent));

            CheckedNodes = new ListCollectionView(allNodes)
            {
                Filter          = new Predicate <object>(CheckedNodeFilter),
                IsLiveFiltering = true
            };
            CheckedNodes.LiveFilteringProperties.Add(nameof(IIdentityTreeItemViewModel <T> .IsChecked));

            ExpandedNodes = new ListCollectionView(allNodes)
            {
                Filter          = new Predicate <object>(ExpandedNodeFilter),
                IsLiveFiltering = true
            };
            ExpandedNodes.LiveFilteringProperties.Add(nameof(IIdentityTreeItemViewModel <T> .IsExpanded));

            SelectedNodes = new ListCollectionView(allNodes)
            {
                Filter          = new Predicate <object>(SelectedNodeFilter),
                IsLiveFiltering = true
            };
            SelectedNodes.LiveFilteringProperties.Add(nameof(IIdentityTreeItemViewModel <T> .IsSelected));

            CreateRootViewModels();
            treeManager.AllItems.CollectionChangeAdded   += OnAllItemsCollectionChangeAdded;
            treeManager.AllItems.CollectionChangeRemoved += OnAllItemsCollectionChangeRemoved;
        }
Exemplo n.º 2
0
        public override void Close()
        {
            foreach (IIdentityTreeItemViewModel <T> vm in viewModelDictionary.Values)
            {
                vm.Close();
            }
            RootNodes     = null;
            CheckedNodes  = null;
            ExpandedNodes = null;
            SelectedNodes = null;

            modelDictionary.Clear();
            modelDictionary = null;
            viewModelDictionary.Clear();
            viewModelDictionary = null;

            allNodes.Clear();
            allNodes = null;

            treeManager.AllItems.CollectionChangeAdded   -= OnAllItemsCollectionChangeAdded;
            treeManager.AllItems.CollectionChangeRemoved -= OnAllItemsCollectionChangeRemoved;
            treeManager = null;
            base.Close();
        }