public virtual void ExpanderButtonClickTogglesIsExpanded()
        {
            TreeView view = new TreeView();
            TreeViewItem item = new TreeViewItem { Header = "Item", IsExpanded = true };
            TreeViewItem child = new TreeViewItem { Header = "Child" };
            view.Items.Add(item);
            item.Items.Add(child);
            ToggleButton ExpanderButton = null;
            AutomationPeer peer = null;
            IToggleProvider provider = null;

            TestAsync(
                5,
                view,
                () => ExpanderButton = item.GetVisualChild("ExpanderButton") as ToggleButton,
                () => Assert.IsNotNull(ExpanderButton, "Failed to find template part ExpanderButton!"),
                () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(ExpanderButton),
                () => provider = peer.GetPattern(PatternInterface.Toggle) as IToggleProvider,
                () => Assert.IsNotNull(provider, "IToggleProvider should not be null!"),
                () => provider.Toggle(),
                () => Assert.IsFalse(item.IsExpanded, "Item should be collapsed when clicking ExpanderButton!"),
                () => provider.Toggle(),
                () => Assert.IsTrue(item.IsExpanded, "Item should be expanded when clicking ExpanderButton again!"));
        }
        public virtual void ExpanderButtonFocusActivatesSelection()
        {
            StackPanel root = new StackPanel();
            TreeView view = new TreeView();
            TreeViewItem item = new TreeViewItem { Header = "Item" };
            Button button = new Button { Content = "Button" };
            view.Items.Add(item);
            root.Children.Add(view);
            root.Children.Add(button);
            ToggleButton ExpanderButton = null;

            TestAsync(
                5,
                root,
                () => item.Focus(),
                () => Assert.IsTrue(item.IsSelected, "Item should be selected!"),
                () => Assert.IsTrue(item.IsSelectionActive, "Selection should be active after focusing!"),
                () => button.Focus(),
                () => Assert.IsFalse(item.IsSelectionActive, "Selection should be inactive after focusing on something else!"),
                () => ExpanderButton = item.GetVisualChild("ExpanderButton") as ToggleButton,
                () => Assert.IsNotNull(ExpanderButton, "Failed to find template part ExpanderButton!"),
                () => ExpanderButton.Focus(),
                () => Assert.IsTrue(item.IsSelectionActive, "Selection should be active after focusing ExpanderButton!"));
        }