void treeViewEx_OnSelecting(object sender, System.Windows.Controls.SelectionChangedCancelEventArgs e) { TreeViewEx treeViewEx = (TreeViewEx)sender; CommandController controller = viewModel.Controller; e.Cancel = true; List <CommandBase> cmdList = new List <CommandBase>(); foreach (object itemToUnselect in e.ItemsToUnSelect) { //if (!treeViewEx.SelectedItems.Contains(itemToUnselect)) continue; cmdList.Add(new DeselectItemCmd(viewModel, (Node)itemToUnselect)); } foreach (object itemToSelect in e.ItemsToSelect) { //if (treeViewEx.SelectedItems.Contains(itemToSelect)) continue; cmdList.Add(new SelectItemCmd(viewModel, (Node)itemToSelect)); //TreeViewExItem tvei = leftTree.GetTreeViewItemFor(itemToSelect); //if (tvei != null) tvei.BringIntoView(new Rect(1, 1, 1, 1)); } if (cmdList.Count > 0) { controller.AddAndExecute(new CommandGroupCmd(viewModel, cmdList.ToArray())); } lblUndoStack.Content = controller.UndoCount; lblRedoStack.Content = controller.RedoCount; return; }
internal bool CheckSelectionAllowed(IEnumerable <object> itemsToSelect, IEnumerable <object> itemsToUnselect) { if (OnSelecting != null) { var e = new SelectionChangedCancelEventArgs(itemsToSelect, itemsToUnselect); foreach (var method in OnSelecting.GetInvocationList()) { method.Method.Invoke(method.Target, new object[] { this, e }); // stop iteration if one subscriber wants to cancel if (e.Cancel) { return(false); } } return(true); } return(true); }
/// <summary> /// TreeViewEx의 OnSelecting 이벤트와 연결 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public virtual void OnNodeSelected(object sender, SelectionChangedCancelEventArgs e) { e.Cancel = true; foreach (object itemToUnselect in e.ItemsToUnSelect) { if (SelectedNodes.Contains(itemToUnselect as FinderNode)) SelectedNodes.Remove(itemToUnselect as FinderNode); } foreach (object itemToSelect in e.ItemsToSelect) { if (!SelectedNodes.Contains(itemToSelect as FinderNode)) SelectedNodes.Add(itemToSelect as FinderNode); } if (SelectItemsChanged != null) SelectItemsChanged(this, EventArgs.Empty); if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("SelectedNodes")); }
/// <summary> /// 노드들을 선택했을 경우 호출되는 EventToCommand /// </summary> /// <param name="e"></param> public void ExecuteNodesSelectedEventCommand(SelectionChangedCancelEventArgs e) { e.Cancel = true; if (e.ItemsToUnSelect != null) { foreach (object itemToUnselect in e.ItemsToUnSelect) { if (SelectedNodes.Contains(itemToUnselect as TreeViewNode)) SelectedNodes.Remove(itemToUnselect as TreeViewNode); } } if (e.ItemsToSelect != null) { foreach (object itemToSelect in e.ItemsToSelect) { if (!SelectedNodes.Contains(itemToSelect as TreeViewNode)) SelectedNodes.Add(itemToSelect as TreeViewNode); } } NotifyPropertyChanged("SelectedNodes"); }
internal bool CheckSelectionAllowed(IEnumerable<object> itemsToSelect, IEnumerable<object> itemsToUnselect) { if (OnSelecting != null) { var e = new SelectionChangedCancelEventArgs(itemsToSelect, itemsToUnselect); foreach (var method in OnSelecting.GetInvocationList()) { method.Method.Invoke(method.Target, new object[] { this, e }); // stop iteration if one subscriber wants to cancel if (e.Cancel) { return false; } } return true; } return true; }
/// <summary> /// TreeViewEx의 OnSelecting 이벤트와 연결 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void OnNodeSelected(object sender, SelectionChangedCancelEventArgs e) { base.OnNodeSelected(sender, e); RemoveDirectoryCommand.RaiseCanExecuteChanged(); }