Ejemplo n.º 1
0
        // NOTE:  This method is static, because the actual SplitTabsControl that created the view may not be the one in which
        // that view lives at the time it is closed.  Being static forces the method to use the sender to obtain the appropriate
        // parent control.
        static void OnViewClosed(object sender, EventArgs e)
        {
            View view = sender as View;

            if (view == null)
            {
                return;
            }

            ActivatableTabItem    item             = ActivatableTabItem.GetTabItem(view);
            ActivatableTabControl tabControl       = item.TabControlParent;
            SplitTabsControl      splitTabsControl = tabControl.FindParent <SplitTabsControl>();
            TabNode node        = tabControl.TabNode;
            bool    switchFocus = tabControl.IsKeyboardFocusWithin;

            splitTabsControl.RemoveItemFromControl(item);

            if (switchFocus)
            {
                if (node.TabControl.SelectedItem is ActivatableTabItem)
                {
                    ((ActivatableTabItem)node.TabControl.SelectedItem).Focus();
                }
                else if (node == splitTabsControl.activeTabNode)
                {
                    // We just closed the last view in the active node.  Need to switch the active
                    // tab node to the last active one.
                    splitTabsControl.ActivateLastActiveTabNode();
                }
            }

            view.Closed -= OnViewClosed;
        }
Ejemplo n.º 2
0
        public void AddItemToControl(ActivatableTabItem item, ActivatableTabControl tabControl, bool giveFocus)
        {
            Debug.Assert(tabControl.FindParent <SplitTabsControl>() == this, "Can't add item to a tab control not owned by this split tabs control!");

            if (giveFocus)
            {
                RoutedEventHandler loadedHandler = null;

                loadedHandler = (s, e2) =>
                {
                    item.Focus();
                    item.Loaded -= loadedHandler;
                };
                item.Loaded += loadedHandler;
            }

            tabControl.ParentSite = this;
            tabControl.Items.Add(item);
        }
        public void AddItemToControl(ActivatableTabItem item, ActivatableTabControl tabControl, bool giveFocus)
        {
            Debug.Assert(tabControl.FindParent<SplitTabsControl>() == this, "Can't add item to a tab control not owned by this split tabs control!");

            if (giveFocus)
            {
                RoutedEventHandler loadedHandler = null;

                loadedHandler = (s, e2) =>
                {
                    item.Focus();
                    item.Loaded -= loadedHandler;
                };
                item.Loaded += loadedHandler;
            }

            tabControl.ParentSite = this;
            tabControl.Items.Add(item);
        }