Bläddra i källkod

增加节点左移右移功能

tanghai 11 år sedan
förälder
incheckning
9f8c7bd6ff

+ 2 - 0
CSharp/App/Modules/Tree/TreeView.xaml

@@ -41,6 +41,8 @@
 				<ContextMenu>
 					<MenuItem Header="新建" Click="MenuItem_New" />
 					<MenuItem Header="删除" Click="MenuItem_Remove" />
+					<MenuItem Header="左移" Click="MenuItem_MoveLeft" />
+					<MenuItem Header="右移" Click="MenuItem_MoveRight" />
 					<MenuItem Header="折叠/展开" Click="MenuItem_Fold" />
 				</ContextMenu>
 			</ListBox.ContextMenu>

+ 20 - 0
CSharp/App/Modules/Tree/TreeView.xaml.cs

@@ -216,5 +216,25 @@ namespace Modules.Tree
                 this.ViewModel.Fold(treeNodeViewModel);
             }
         }
+
+        private void MenuItem_MoveLeft(object sender, RoutedEventArgs e)
+        {
+            if (this.listBox.SelectedItem == null)
+            {
+                return;
+            }
+            var treeNodeViewModel = this.listBox.SelectedItem as TreeNodeViewModel;
+            this.ViewModel.MoveLeft(treeNodeViewModel);
+        }
+
+        private void MenuItem_MoveRight(object sender, RoutedEventArgs e)
+        {
+            if (this.listBox.SelectedItem == null)
+            {
+                return;
+            }
+            var treeNodeViewModel = this.listBox.SelectedItem as TreeNodeViewModel;
+            this.ViewModel.MoveRight(treeNodeViewModel);
+        }
     }
 }

+ 38 - 0
CSharp/App/Modules/Tree/TreeViewModel.cs

@@ -223,5 +223,43 @@ namespace Modules.Tree
             var treeLayout = new TreeLayout(this);
             treeLayout.ExcuteLayout(this.Root);
         }
+
+        public void MoveLeft(TreeNodeViewModel treeNodeViewModel)
+        {
+            if (treeNodeViewModel.IsRoot)
+            {
+                return;
+            }
+            var parent = treeNodeViewModel.Parent;
+            int index = parent.Children.IndexOf(treeNodeViewModel.Id);
+            if (index == 0)
+            {
+                return;
+            }
+            parent.Children.Remove(treeNodeViewModel.Id);
+            parent.Children.Insert(index - 1, treeNodeViewModel.Id);
+
+            var treeLayout = new TreeLayout(this);
+            treeLayout.ExcuteLayout(this.Root);
+        }
+
+        public void MoveRight(TreeNodeViewModel treeNodeViewModel)
+        {
+            if (treeNodeViewModel.IsRoot)
+            {
+                return;
+            }
+            var parent = treeNodeViewModel.Parent;
+            int index = parent.Children.IndexOf(treeNodeViewModel.Id);
+            if (index == parent.Children.Count - 1)
+            {
+                return;
+            }
+            parent.Children.Remove(treeNodeViewModel.Id);
+            parent.Children.Insert(index + 1, treeNodeViewModel.Id);
+
+            var treeLayout = new TreeLayout(this);
+            treeLayout.ExcuteLayout(this.Root);
+        }
     }
 }