private void Selection(MouseClickType mouseClickType) { if (_treeModify) { return; } _treeModify = true; if (mouseClickType == MouseClickType.RightClick) { // Sets the parent of the current BlockReference as current. model1.Entities.SetParentAsCurrent(); } else { // Deselects the previously selected item if (lastSelectedItem != null) { lastSelectedItem.Select(model1, false); lastSelectedItem = null; } var item = model1.GetItemUnderMouseCursor(_mouseLocation); if (item != null) { lastSelectedItem = item; TreeViewUtility.CleanCurrent(model1, false); // Marks as selected the entity under the mouse cursor. item.Select(model1, true); } else { // Back to the root level if (mouseClickType == MouseClickType.LeftDoubleClick) { TreeViewUtility.CleanCurrent(model1); } } } // An entity in the viewport was selected, so we highlight the corresponding element in the treeview as well TreeViewUtility.SynchScreenSelection(treeView1, new Stack <BlockReference>(model1.Entities.Parents), lastSelectedItem); model1.Invalidate(); _treeModify = false; }
private void TreeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { if (_treeModify) { return; } _treeModify = true; //An element of the treeview was selected, so we select the corresponding viewport element as well if (lastSelectedItem != null) { lastSelectedItem.Select(model1, false); } TreeViewUtility.CleanCurrent(model1); lastSelectedItem = TreeViewUtility.SynchTreeSelection(treeView1, model1); model1.Invalidate(); _treeModify = false; }