コード例 #1
0
        protected override void Awake()
        {
            base.Awake();

            _associatedTreeViewSelectable = GetComponentInChildren <ITreeViewSelectable>();
            _associatedTreeViewSelectable.SetAssociatedTreeViewElement(this);
        }
コード例 #2
0
        // does the real multi select
        private void SelectedItemChangedHandler(TreeViewItem item)
        {
            if (!this.MultiSelect)
            {
                return;
            }

            ITreeViewSelectable content = (ITreeViewSelectable)item.Header;

            _itemToCheck = null;

            if (content.IsSelected)
            {
                // Check it at the mouse up event to avoid deselecting everything when clicking to drag
                _itemToCheck = item;
            }
            else
            {
                if (!this.IsCtrlPressed)
                {
                    GetTreeViewItems(true)
                    .Select(t => t.Header)
                    .Cast <ITreeViewSelectable>()
                    .ToList()
                    .ForEach(f => f.IsSelected = false);
                }

                if (this.IsShiftPressed && _lastItemSelected != null)
                {
                    foreach (TreeViewItem tempItem in GetTreeViewItemsBetween(_lastItemSelected, item))
                    {
                        ((ITreeViewSelectable)tempItem.Header).IsSelected = true;
                        _lastItemSelected = tempItem;
                    }
                }
                else
                {
                    content.IsSelected = true;
                    _lastItemSelected  = item;
                    this.treeViewInner.Items.Refresh();
                    this.treeViewInner.UpdateLayout();
                }
            }
        }