コード例 #1
0
ファイル: TreeView.cs プロジェクト: ikihiki/TodoTree
            public override bool Update(TreeViewElement <T> treeViewElement)
            {
                if (View.AspectGetter != treeViewElement.AspectGetter)
                {
                    View.AspectGetter = treeViewElement.AspectGetter;
                }

                if (View.TreeBuilder != treeViewElement.TreeBuilder)
                {
                    View.TreeBuilder = treeViewElement.TreeBuilder;
                }

                if (Prev.Root != treeViewElement.Root)
                {
                    var adds = treeViewElement.Root.Except(View.Objects, treeViewElement.EqualityComparer);
                    foreach (var todo in adds)
                    {
                        View.AddObject(todo);
                    }

                    var removes = View.Objects.Except(treeViewElement.Root, treeViewElement.EqualityComparer);
                    foreach (var todo in removes)
                    {
                        var remove = View.Objects.Where(obj => obj == todo).ToArray();
                        if (remove.Length > 0)
                        {
                            foreach (var item in remove)
                            {
                                View.Remove(item);
                            }
                        }
                    }
                }
                return(base.Update(treeViewElement));;
            }
コード例 #2
0
ファイル: TreeView.cs プロジェクト: ikihiki/TodoTree
 public State(TreeViewElement <T> element) : base(element, new TreeView <T>())
 {
     View.AspectGetter     = element.AspectGetter;
     View.TreeBuilder      = element.TreeBuilder;
     View.ObjectActivated += (args) =>
     {
         Prev.ObjectActivated?.Invoke(args.ActivatedObject);
         View.RefreshObject(args.ActivatedObject);
     };
     View.SelectionChanged += (obj, e) =>
     {
         Prev.Selected?.Invoke(e.NewValue);
     };
     foreach (var value in element.Root)
     {
         View.AddObject(value);
     }
 }