Пример #1
0
        private bool ModifySelection(List <object> itemsToSelect, List <object> itemsToUnselect)
        {
            //clean up any duplicate or unnecessery input
            OptimizeModifySelection(itemsToSelect, itemsToUnselect);

            //check if there's anything to do.
            if (itemsToSelect.Count == 0 && itemsToUnselect.Count == 0)
            {
                return(false);
            }

            // notify listeners what is about to change.
            // Let them cancel and/or handle the selection list themself
            bool allowed = treeViewEx.CheckSelectionAllowed(itemsToSelect, itemsToUnselect);

            if (!allowed)
            {
                return(false);
            }

            // Unselect and then select items
            foreach (object itemToUnSelect in itemsToUnselect)
            {
                treeViewEx.SelectedItems.Remove(itemToUnSelect);
            }

            foreach (object itemToSelect in itemsToSelect)
            {
                treeViewEx.SelectedItems.Add(itemToSelect);
            }

            object lastSelectedItem = itemsToSelect.LastOrDefault();

            if (itemsToUnselect.Contains(lastShiftRoot))
            {
                lastShiftRoot = null;
            }
            if (!(TreeView.SelectedItems.Contains(lastShiftRoot) && IsShiftKeyDown))
            {
                lastShiftRoot = lastSelectedItem;
            }

            return(true);
        }
Пример #2
0
        public void Select(TreeViewExItem item)
        {
            if (!treeViewEx.CheckSelectionAllowed(item.DataContext, true))
            {
                return;
            }

            if (IsControlKeyDown && treeViewEx.SelectedItems.Contains(item.DataContext))
            {
                UnSelect(item);
            }
            else
            {
                SelectCore(item);
            }
        }