private void SelectWithShift(TreeViewExItem item) { object firstSelectedItem; if (lastShiftRoot != null) { firstSelectedItem = lastShiftRoot; } else { if (treeViewEx.SelectedItems.Count > 0) { firstSelectedItem = treeViewEx.SelectedItems[0]; } else { firstSelectedItem = null; } } TreeViewExItem shiftRootItem = treeViewEx.GetTreeViewItemsFor(new List <object> { firstSelectedItem }).First(); List <object> itemsToSelect = treeViewEx.GetNodesToSelectBetween(shiftRootItem, item).Select(x => x.DataContext).ToList(); List <object> itemsToUnSelect = ((IEnumerable <object>)treeViewEx.SelectedItems).ToList(); ModifySelection(itemsToSelect, itemsToUnSelect); }
IRawElementProviderSimple[] ISelectionProvider.GetSelection() { List <IRawElementProviderSimple> list = new List <IRawElementProviderSimple>(); TreeViewEx treeView = (TreeViewEx)Owner; foreach (var item in treeView.GetTreeViewItemsFor(treeView.SelectedItems)) { list.Add(new TreeViewExItemAutomationPeer(item, this)); } return(list.ToArray()); }