void treeViewEx_OnSelecting(object sender, 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; }