public virtual void TreeViewItemPeerScroll() { TreeView view = new TreeView { Height = 20, ItemsSource = new int[] { 1, 2, 3, 4, 5 } }; TreeViewItem item = null; TreeViewItemAutomationPeer peer = null; IScrollItemProvider provider = null; TestAsync( 5, view, () => item = view.ItemContainerGenerator.ContainerFromIndex(4) as TreeViewItem, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => provider = peer.GetPattern(PatternInterface.ScrollItem) as IScrollItemProvider, () => provider.ScrollIntoView(), () => { foreach (DependencyObject obj in view.GetVisualDescendents()) { ScrollViewer viewer = obj as ScrollViewer; if (viewer != null) { Assert.AreNotEqual(0, viewer.VerticalOffset, "ScrollHost was not scrolled!"); return; } } Assert.Fail("Did not find the ScrollHost!"); }); }
public DirectoryTree2() { #region ContextMenu this.AddHandler(TreeViewItem.MouseRightButtonUpEvent, new MouseButtonEventHandler( (MouseButtonEventHandler) delegate(object sender, MouseButtonEventArgs args) { TreeViewItem sourceItem = UITools.GetParentTreeViewItem(args.OriginalSource as FrameworkElement); if (sourceItem != null) { if (!sourceItem.IsSelected) { TreeViewItemAutomationPeer peer = new TreeViewItemAutomationPeer(sourceItem); ISelectionItemProvider invokeProv = peer.GetPattern(PatternInterface.SelectionItem) as ISelectionItemProvider; invokeProv.Select(); } if (sourceItem.IsSelected) { if (ContextMenuCommand != null && ContextMenuCommand.CanExecute(this.SelectedItem)) { ContextMenuCommand.Execute(this.SelectedItem); } } } })); #endregion W7TreeViewItemUtils.SetIsEnabled(this, true); }
private static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TreeViewItem item = (TreeViewItem)d; bool isSelected = (bool)e.NewValue; item.Select(isSelected); TreeViewItemAutomationPeer peer = UIElementAutomationPeer.FromElement(item) as TreeViewItemAutomationPeer; if (peer != null) { peer.RaiseAutomationIsSelectedChanged(isSelected); } if (isSelected) { item.OnSelected(new RoutedEventArgs(SelectedEvent, item)); } else { item.OnUnselected(new RoutedEventArgs(UnselectedEvent, item)); } item.UpdateVisualState(); }
// Token: 0x060058F7 RID: 22775 RVA: 0x00189CAC File Offset: 0x00187EAC private static void OnIsExpandedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TreeViewItem treeViewItem = (TreeViewItem)d; bool flag = (bool)e.NewValue; TreeView parentTreeView = treeViewItem.ParentTreeView; if (parentTreeView != null && !flag) { parentTreeView.HandleSelectionAndCollapsed(treeViewItem); } ItemsPresenter itemsHostPresenter = treeViewItem.ItemsHostPresenter; if (itemsHostPresenter != null) { treeViewItem.InvalidateMeasure(); Helper.InvalidateMeasureOnPath(itemsHostPresenter, treeViewItem, false); } TreeViewItemAutomationPeer treeViewItemAutomationPeer = UIElementAutomationPeer.FromElement(treeViewItem) as TreeViewItemAutomationPeer; if (treeViewItemAutomationPeer != null) { treeViewItemAutomationPeer.RaiseExpandCollapseAutomationEvent((bool)e.OldValue, flag); } if (flag) { treeViewItem.OnExpanded(new RoutedEventArgs(TreeViewItem.ExpandedEvent, treeViewItem)); } else { treeViewItem.OnCollapsed(new RoutedEventArgs(TreeViewItem.CollapsedEvent, treeViewItem)); } treeViewItem.UpdateVisualState(); }
static void ShowNextItem(TreeViewItem item) { var peer = new TreeViewItemAutomationPeer(item); IExpandCollapseProvider expander = peer; expander.Expand(); InvokeUtility.DoEvents(); }
public virtual void TreeViewItemPeerGetNoItems() { TreeViewItem item = new TreeViewItem(); TreeViewItemAutomationPeer peer = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => Assert.IsNull(peer.GetChildren(), "There should be no children when the TreeViewItem does not have items!")); }
public virtual void TreeViewItemAutomationPeerTypeAndClass() { TreeViewItem item = new TreeViewItem(); TreeViewItemAutomationPeer peer = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => Assert.AreEqual(AutomationControlType.TreeItem, peer.GetAutomationControlType(), "Unexpected AutomationControlType!"), () => Assert.AreEqual("TreeViewItem", peer.GetClassName(), "Unexpected ClassType!")); }
public virtual void TreeViewItemCreatesAutomationPeer() { TreeViewItem item = new TreeViewItem(); TreeViewItemAutomationPeer peer = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => Assert.IsNotNull(peer, "TreeViewItem peer should not be null!"), () => Assert.AreEqual(item, peer.Owner, "TreeViewItem should be owner of the peer!")); }
public virtual void TreeViewItemPeerCollapsingNoItems() { TreeViewItem item = new TreeViewItem(); TreeViewItemAutomationPeer peer = null; IExpandCollapseProvider provider = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider, () => provider.Collapse()); }
public virtual void TreeViewItemPeerScrollNoParent() { TreeViewItem item = new TreeViewItem(); TreeViewItemAutomationPeer peer = null; IScrollItemProvider provider = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => provider = peer.GetPattern(PatternInterface.ScrollItem) as IScrollItemProvider, () => provider.ScrollIntoView()); }
public virtual void TreeViewItemPeerSupportsExpandCollapse() { TreeViewItem item = new TreeViewItem(); TreeViewItemAutomationPeer peer = null; IExpandCollapseProvider provider = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider, () => Assert.IsNotNull(provider, "IExpandCollapseProvider peer should not be null!")); }
public virtual void TreeViewItemPeerExpandStateNoItems() { TreeViewItem item = new TreeViewItem(); TreeViewItemAutomationPeer peer = null; IExpandCollapseProvider provider = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider, () => Assert.AreEqual(ExpandCollapseState.LeafNode, provider.ExpandCollapseState, "Unexpected ExpandCollapseState!")); }
public virtual void TreeViewItemPeerExpandDisabled() { TreeViewItem item = new TreeViewItem { IsEnabled = false }; TreeViewItemAutomationPeer peer = null; IExpandCollapseProvider provider = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider, () => provider.Expand()); }
public virtual void TreeViewItemPeerExpandStateExpanded() { TreeViewItem item = new TreeViewItem { IsExpanded = true, ItemsSource = new int[] { 1, 2, 3 } }; TreeViewItemAutomationPeer peer = null; IExpandCollapseProvider provider = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider, () => Assert.AreEqual(ExpandCollapseState.Expanded, provider.ExpandCollapseState, "Unexpected ExpandCollapseState!")); }
public virtual void TreeViewItemPeerCollapseCollapsed() { TreeViewItem item = new TreeViewItem { ItemsSource = new int[] { 1, 2, 3 } }; TreeViewItemAutomationPeer peer = null; IExpandCollapseProvider provider = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider, () => provider.Collapse(), () => Assert.IsFalse(item.IsExpanded, "Item should be collapsed!")); }
public virtual void TreeViewItemPeerGetWithItems() { TreeViewItem item = new TreeViewItem { ItemsSource = new int[] { 1, 2, 3 } }; TreeViewItemAutomationPeer peer = null; List <AutomationPeer> items = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => items = peer.GetChildren(), () => Assert.AreEqual(3, items.Count, "Unexpected number of child peers!"), () => Assert.IsInstanceOfType(items[0], typeof(TreeViewItemAutomationPeer), "Child peer is not a TreeViewItemAutomationPeer!")); }
private static void OnIsExpandedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TreeViewItem item = (TreeViewItem)d; bool isExpanded = (bool)e.NewValue; TreeView tv = item.ParentTreeView; if (tv != null) { if (!isExpanded) { tv.HandleSelectionAndCollapsed(item); } } ItemsPresenter itemsHostPresenter = item.ItemsHostPresenter; if (itemsHostPresenter != null) { // In case a TreeViewItem that wasn't previously expanded is now // recycled to represent an entity that is expanded or viceversa, we // face a situation where we need to synchronously remeasure the // sub tree through the ItemsPresenter leading up to the ItemsHost // panel. If we didnt do this the offsets could get skewed. item.InvalidateMeasure(); Helper.InvalidateMeasureOnPath(itemsHostPresenter, item, false /*duringMeasure*/); } TreeViewItemAutomationPeer peer = UIElementAutomationPeer.FromElement(item) as TreeViewItemAutomationPeer; if (peer != null) { peer.RaiseExpandCollapseAutomationEvent((bool)e.OldValue, isExpanded); } if (isExpanded) { item.OnExpanded(new RoutedEventArgs(ExpandedEvent, item)); } else { item.OnCollapsed(new RoutedEventArgs(CollapsedEvent, item)); } item.UpdateVisualState(); }
// Token: 0x060058FA RID: 22778 RVA: 0x00189D6C File Offset: 0x00187F6C private static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TreeViewItem treeViewItem = (TreeViewItem)d; bool flag = (bool)e.NewValue; treeViewItem.Select(flag); TreeViewItemAutomationPeer treeViewItemAutomationPeer = UIElementAutomationPeer.FromElement(treeViewItem) as TreeViewItemAutomationPeer; if (treeViewItemAutomationPeer != null) { treeViewItemAutomationPeer.RaiseAutomationIsSelectedChanged(flag); } if (flag) { treeViewItem.OnSelected(new RoutedEventArgs(TreeViewItem.SelectedEvent, treeViewItem)); } else { treeViewItem.OnUnselected(new RoutedEventArgs(TreeViewItem.UnselectedEvent, treeViewItem)); } treeViewItem.UpdateVisualState(); }
public virtual void TreeViewItemPeerOnlySupportsScrollingAndSelection() { TreeViewItem item = new TreeViewItem(); TreeViewItemAutomationPeer peer = null; TestAsync( item, () => peer = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer, () => Assert.IsNull(peer.GetPattern(PatternInterface.Dock), "TreeViewItemAutomationPeer should not support the Dock pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Grid), "TreeViewItemAutomationPeer should not support the Grid pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.GridItem), "TreeViewItemAutomationPeer should not support the GridItem pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Invoke), "TreeViewItemAutomationPeer should not support the Dock pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.MultipleView), "TreeViewItemAutomationPeer should not support the MultipleView pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.RangeValue), "TreeViewItemAutomationPeer should not support the RangeValue pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Scroll), "TreeViewItemAutomationPeer should not support the Scroll pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Selection), "TreeViewItemAutomationPeer should not support the Selection pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Table), "TreeViewItemAutomationPeer should not support the Table pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.TableItem), "TreeViewItemAutomationPeer should not support the TableItem pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Toggle), "TreeViewItemAutomationPeer should not support the Toggle pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Transform), "TreeViewItemAutomationPeer should not support the Transform pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Value), "TreeViewItemAutomationPeer should not support the Value pattern!"), () => Assert.IsNull(peer.GetPattern(PatternInterface.Window), "TreeViewItemAutomationPeer should not support the Window pattern!")); }
internal void ChangeSelection(object data, TreeViewItem container, bool selected) { if (IsSelectionChangeActive) { return; } object oldValue = null; object newValue = null; bool changed = false; TreeViewItem oldContainer = _selectedContainer; // Saved for the automation event IsSelectionChangeActive = true; try { if (selected) { if (container != _selectedContainer) { oldValue = SelectedItem; newValue = data; if (_selectedContainer != null) { _selectedContainer.IsSelected = false; _selectedContainer.UpdateContainsSelection(false); } _selectedContainer = container; _selectedContainer.UpdateContainsSelection(true); SetSelectedItem(data); UpdateSelectedValue(data); changed = true; } } else { if (container == _selectedContainer) { _selectedContainer.UpdateContainsSelection(false); _selectedContainer = null; SetSelectedItem(null); oldValue = data; changed = true; } } if (container.IsSelected != selected) { container.IsSelected = selected; } } finally { IsSelectionChangeActive = false; } if (changed) { if (_selectedContainer != null && AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementSelected)) { TreeViewItemAutomationPeer peer = UIElementAutomationPeer.CreatePeerForElement(_selectedContainer) as TreeViewItemAutomationPeer; if (peer != null) { peer.RaiseAutomationSelectionEvent(AutomationEvents.SelectionItemPatternOnElementSelected); } } if (oldContainer != null && AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementRemovedFromSelection)) { TreeViewItemAutomationPeer peer = UIElementAutomationPeer.CreatePeerForElement(oldContainer) as TreeViewItemAutomationPeer; if (peer != null) { peer.RaiseAutomationSelectionEvent(AutomationEvents.SelectionItemPatternOnElementRemovedFromSelection); } } RoutedPropertyChangedEventArgs <object> e = new RoutedPropertyChangedEventArgs <object>(oldValue, newValue, SelectedItemChangedEvent); OnSelectedItemChanged(e); } }
// Token: 0x060058D5 RID: 22741 RVA: 0x00189170 File Offset: 0x00187370 internal void ChangeSelection(object data, TreeViewItem container, bool selected) { if (this.IsSelectionChangeActive) { return; } object oldValue = null; object newValue = null; bool flag = false; TreeViewItem selectedContainer = this._selectedContainer; this.IsSelectionChangeActive = true; try { if (selected) { if (container != this._selectedContainer) { oldValue = this.SelectedItem; newValue = data; if (this._selectedContainer != null) { this._selectedContainer.IsSelected = false; this._selectedContainer.UpdateContainsSelection(false); } this._selectedContainer = container; this._selectedContainer.UpdateContainsSelection(true); this.SetSelectedItem(data); this.UpdateSelectedValue(data); flag = true; } } else if (container == this._selectedContainer) { this._selectedContainer.UpdateContainsSelection(false); this._selectedContainer = null; this.SetSelectedItem(null); this.UpdateSelectedValue(null); oldValue = data; flag = true; } if (container.IsSelected != selected) { container.IsSelected = selected; } } finally { this.IsSelectionChangeActive = false; } if (flag) { if (this._selectedContainer != null && AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementSelected)) { TreeViewItemAutomationPeer treeViewItemAutomationPeer = UIElementAutomationPeer.CreatePeerForElement(this._selectedContainer) as TreeViewItemAutomationPeer; if (treeViewItemAutomationPeer != null) { treeViewItemAutomationPeer.RaiseAutomationSelectionEvent(AutomationEvents.SelectionItemPatternOnElementSelected); } } if (selectedContainer != null && AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementRemovedFromSelection)) { TreeViewItemAutomationPeer treeViewItemAutomationPeer2 = UIElementAutomationPeer.CreatePeerForElement(selectedContainer) as TreeViewItemAutomationPeer; if (treeViewItemAutomationPeer2 != null) { treeViewItemAutomationPeer2.RaiseAutomationSelectionEvent(AutomationEvents.SelectionItemPatternOnElementRemovedFromSelection); } } RoutedPropertyChangedEventArgs <object> e = new RoutedPropertyChangedEventArgs <object>(oldValue, newValue, TreeView.SelectedItemChangedEvent); this.OnSelectedItemChanged(e); } }