public void AddToFave(int taskID) { if (TasksVM.IsFave(taskID)) { return; } var taskNode = TasksVM.DictionaryFull[taskID]; // Добавим всех родителей, если их нет в избранном List <TreeNode> toAddInFave = new List <TreeNode>(); var parent = taskNode.ParentNode; while (parent != null && !TreeRoots.Contains(parent)) { toAddInFave.Add(parent); parent = parent.ParentNode; } for (int i = toAddInFave.Count - 1; i >= 0; --i) { if (!TasksVM.IsFave(toAddInFave[i].Task.ID)) { TasksVM.AddFave(toAddInFave[i].Task); } } // Добавим себя TasksVM.AddFave(taskNode.Task); if (taskNode.Task.ParentTaskID == null) { TreeRoots.Add(taskNode); } }
private bool CanMoveDown(object obj) { if (SelectedTaskNode == null || dialog != null || !MainWindow.IsEnable) { return(false); } if (SelectedTaskNode.ParentNode != null) { TreeNode parentNode = SelectedTaskNode.ParentNode; int index = parentNode.TreeNodes.IndexOf(SelectedTaskNode); if (index + 1 < parentNode.TreeNodes.Count) { return(true); } } else { int index = TreeRoots.IndexOf(SelectedTaskNode); if (index + 1 < TreeRoots.Count) { return(true); } } return(false); }
// If you have install the code sniplets, use "propvm + [tab] +[tab]" create a property propcmd for command // 如果您已经安装了 MVVMSidekick 代码片段,请用 propvm +tab +tab 输入属性 propcmd 输入命令 public MultiLevelSelection_Model() { if (IsInDesignMode) { } var rval = Enumerable.Range(0, 3) .Select( i => { var item = new TreeItemModel <string, string> { State = "Item" + i.ToString() }; PopulateVNext(item); foreach (TreeItemModel <string, string> itmlv2 in item.Children) { PopulateVNext(itmlv2); } return(item); } ); foreach (var item in rval) { TreeRoots.Add(item); } Level1Selection.GetValueContainer(x => x.SelectedItem) .GetNullObservable() .Where(_ => Level1Selection.SelectedItem != null) .Subscribe( _ => { Level2Selection.Items = new ObservableCollection <TreeItemModel <string, string> >(Level1Selection.SelectedItem.Children.Cast <TreeItemModel <string, string> >()); } ); Level2Selection.GetValueContainer(x => x.SelectedItem) .GetNullObservable() .Where(_ => Level2Selection.SelectedItem != null) .Subscribe( _ => { Level3Selection.Items = new ObservableCollection <TreeItemModel <string, string> >(Level2Selection.SelectedItem.Children.Cast <TreeItemModel <string, string> >()); } ); }
public void DoTaskCommand(KeyValuePair <FaveTaskCommandEnum, Task> pair) { FaveTaskCommandEnum command = pair.Key; Task task = pair.Value; if (!TasksVM.Dictionary.ContainsKey(task.ID)) { return; } switch (command) { case FaveTaskCommandEnum.Edit: TreeNode oldNode = TasksVM.Dictionary[task.ID]; int index = -1; if (oldNode.ParentNode == null) { index = TreeRoots.IndexOf(oldNode); } //if (oldNode.ParentNode != TasksVM.DictionaryFull[task.ID].ParentNode) //{ // Context.procedureWork.RepareUserFave(task.ID); // TasksVM.Init_tracker = false; // TasksVM.InitFave(); //} TasksVM.Edit(task, false); TreeNode newNode = TasksVM.Dictionary[task.ID]; if (index != -1 && newNode.ParentNode == null) { UpdateRootNode(index, newNode); } else if (newNode.ParentNode == null) { AddRootNode(newNode); } else { DeleteRootNode(oldNode); } break; } }
private void DeleteFaveTask(object obj) { FilterTaskText = ""; FilterTree(obj); TasksVM.FilterFaveTaskText = ""; var dialogResult = System.Windows.MessageBox.Show("Вы уверены, что хотите удалить задачу из избранного?", "Подтверждение", MessageBoxButton.YesNo, MessageBoxImage.Question); if (dialogResult == MessageBoxResult.No) { return; } //Mouse.OverrideCursor = Cursors.Wait; Mouse.SetCursor(Cursors.Wait); //Roots int delTaskID = SelectedTaskNode.Task.ID; int?parentTaskID = SelectedTaskNode.Task.ParentTaskID; if (TreeRoots.Contains(SelectedTaskNode)) { TreeRoots.Remove(SelectedTaskNode); } //if (TasksVM.Dictionary.ContainsKey(SelectedTaskNode.Task.ID)) // TasksVM.Dictionary.Remove(SelectedTaskNode.Task.ID); TasksVM.DeleteFaveWithChildren(delTaskID); if (parentTaskID != null) { ChangeSelection(TasksVM.Dictionary[(int)parentTaskID]); } else { ChangeSelection(TasksVM.Dictionary.FirstOrDefault().Value); } //Mouse.OverrideCursor = Cursors.Arrow; Mouse.SetCursor(Cursors.Arrow); }
private void MoveUp(object obj) { int curI = (int)SelectedTaskNode.IndexNumber; var task1 = SelectedTaskNode.Task; Task task2 = null; if (SelectedTaskNode.ParentNode != null) { TreeNode parentNode = SelectedTaskNode.ParentNode; int index = parentNode.TreeNodes.IndexOf(SelectedTaskNode); parentNode.TreeNodes[index].IndexNumber = parentNode.TreeNodes[index - 1].IndexNumber; parentNode.TreeNodes[index - 1].IndexNumber = curI; task2 = parentNode.TreeNodes[index - 1].Task; DoTaskCommand(new KeyValuePair <FaveTaskCommandEnum, Task>(FaveTaskCommandEnum.Edit, parentNode.TreeNodes[index].Task)); DoTaskCommand(new KeyValuePair <FaveTaskCommandEnum, Task>(FaveTaskCommandEnum.Edit, parentNode.TreeNodes[index - 1].Task)); parentNode.TreeNodes.Move(index, index - 1); ChangeSelection(parentNode.TreeNodes[index - 1]); } else { int index = TreeRoots.IndexOf(SelectedTaskNode); TreeRoots[index].IndexNumber = TreeRoots[index - 1].IndexNumber; TreeRoots[index - 1].IndexNumber = curI; task2 = TreeRoots[index - 1].Task; DoTaskCommand(new KeyValuePair <FaveTaskCommandEnum, Task>(FaveTaskCommandEnum.Edit, TreeRoots[index].Task)); DoTaskCommand(new KeyValuePair <FaveTaskCommandEnum, Task>(FaveTaskCommandEnum.Edit, TreeRoots[index - 1].Task)); TreeRoots.Move(index, index - 1); ChangeSelection(TreeRoots[index - 1]); } TasksVM.ReplaceUserTasks(task1, task2); }