private void SelectionManager(EO.Wpf.TreeViewItem treeViewItem, bool isRightClick = true) { Kernel.Domain.Role role; if (treeViewItem.Header.ToString() == defaultValue.name) { role = null; treeViewItem.Focus(); } else { role = this.Root.GetChildByName(treeViewItem.Header.ToString()) as Domain.Role; if (!CtrlPressed) { if (!isRightClick || (isRightClick && !selectedItems.ContainsKey(treeViewItem) && !selectedRoles.Keys.Contains(role))) { removeCTRLSelection(); selectedItems.Add(treeViewItem, null); SetSelectedItem(treeViewItem); selectedRoles.Add(role, selectedRoles.Count + 1); } } else if (CtrlPressed && !selectedItems.ContainsKey(treeViewItem) && !selectedRoles.Keys.Contains(role)) { selectedItems.Add(treeViewItem, null); selectedRoles.Add(role, selectedRoles.Count + 1); SetSelectedItem(treeViewItem); } } }
/// <summary> /// Cette methode permet la selection du noeud présent derrière la souris /// lorsque fait un click-droit. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { EO.Wpf.TreeViewItem treeViewItem = VisualUpwardSearch(e.OriginalSource as DependencyObject); if (treeViewItem != null) { treeViewItem.Focus(); SelectionManager(treeViewItem); e.Handled = true; } else { Kernel.Domain.Role r = GetSelectedRole(); if (r != null) { r.IsSelected = false; } tree.Focus(); removeCTRLSelection(); } }