static TreeViewItem GetItemAndScrollIntoView(TreeView tree, ItemsControl parent, int i) { var peer = ItemsControlAutomationPeer.CreatePeerForElement(tree); var scrollProvider = peer.GetPattern(PatternInterface.Scroll) as IScrollProvider; var direction = ScrollAmount.SmallIncrement; while (true) { var item = parent.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem; if (item != null) { item.BringIntoView(); InvokeUtility.DoEvents(); return(item); } if (scrollProvider.VerticalScrollPercent == 100) { direction = ScrollAmount.SmallDecrement; } if (direction == ScrollAmount.SmallDecrement && scrollProvider.VerticalScrollPercent == 0) { throw new NotSupportedException(ResourcesLocal3.Instance.ErrorNotFoundItem); } scrollProvider.Scroll(ScrollAmount.NoAmount, direction); InvokeUtility.DoEvents(); } }
private async void SetDepthListboxScrollPosition() { try { await Task.Delay(1000); System.Windows.Application.Current.Dispatcher.Invoke(() => { if (this.DepthListBox.Items.Count > 0) { try { // ListBoxからAutomationPeerを取得 var peer = ItemsControlAutomationPeer.CreatePeerForElement(this.DepthListBox); // GetPatternでIScrollProviderを取得 var scrollProvider = peer.GetPattern(System.Windows.Automation.Peers.PatternInterface.Scroll) as IScrollProvider; if (scrollProvider != null) { if (scrollProvider.VerticallyScrollable) { try { // パーセントで位置を指定してスクロール scrollProvider.SetScrollPercent( // 水平スクロールは今の位置 scrollProvider.HorizontalScrollPercent, // 垂直方向50% 50.0); } catch { System.Diagnostics.Debug.WriteLine("■■■■■ SetDepthListboxScrollPosition scrollProvider null Error"); } } } } catch { System.Diagnostics.Debug.WriteLine("■■■■■ SetDepthListboxScrollPosition SetScrollPercent Error"); } } }); } catch (Exception e) { System.Diagnostics.Debug.WriteLine("■■■■■ SetDepthListboxScrollPosition Exception: " + e); } }
private UIElement GetWrapper() { UIElement wrapper = null; ItemsControlAutomationPeer itemsControlAutomationPeer = ItemsControlAutomationPeer; if (itemsControlAutomationPeer != null) { ItemsControl owner = (ItemsControl)(itemsControlAutomationPeer.Owner); if (owner != null) { wrapper = owner.ItemContainerGenerator.ContainerFromItem(Item) as UIElement; } } return(wrapper); }
internal RibbonGalleryItem GetOwningRibbonGalleryItem() { RibbonGalleryItem owningRibbonGalleryItem = null; ItemsControlAutomationPeer itemsControlAutomationPeer = ItemsControlAutomationPeer; if (itemsControlAutomationPeer != null) { RibbonGalleryCategory containingCategory = (RibbonGalleryCategory)(itemsControlAutomationPeer.Owner); if (containingCategory != null) { owningRibbonGalleryItem = (RibbonGalleryItem)containingCategory.ItemContainerGenerator.ContainerFromItem(Item); } } return(owningRibbonGalleryItem); }
private void ThisIsCalledWhenPropertyIsChanged(object sender, EventArgs e) { // ItemsSourceプロパティの値が変更された場合、ListViewの垂直方向のスクロール位置を先頭に移動する // (ItemsSourceプロパティのコレクションへの操作では、この処理は行われないので注意してください) // ListViewからAutomationPeerを取得 var peer = ItemsControlAutomationPeer.CreatePeerForElement(AssociatedObject); // GetPatternでIScrollProviderを取得 var scrollProvider = peer.GetPattern(PatternInterface.Scroll) as IScrollProvider; if (scrollProvider.VerticallyScrollable) { scrollProvider.SetScrollPercent( // 水平スクロールは今の位置 scrollProvider.HorizontalScrollPercent, // 垂直方向は先頭!(0%) 0.0); } }
/// <summary> /// DataGridを一番下までスクロールさせます。 /// </summary> private static void OnAutoScrollToEndChanged(DependencyObject s, DependencyPropertyChangedEventArgs e) { var dataGrid = s as DataGrid; var data = dataGrid.Items.SourceCollection as INotifyCollectionChanged; var peer = ItemsControlAutomationPeer.CreatePeerForElement(dataGrid); if (peer == null) { Log.Error( "dataGridのItemsControlAutomationPeerが取得できません。"); return; } var handler = new NotifyCollectionChangedEventHandler( (s1, e1) => { var provider = peer.GetPattern(PatternInterface.Scroll) as IScrollProvider; if (provider == null || !provider.VerticallyScrollable) { // スクロールバーがない可能性。 return; } provider.SetScrollPercent( ScrollPatternIdentifiers.NoScroll, 100); }); if ((bool)e.NewValue) { data.CollectionChanged += handler; } else { data.CollectionChanged -= handler; } }
public RibbonControlDataAutomationPeer(object item, ItemsControlAutomationPeer itemsControlPeer) : base(item, itemsControlPeer) { }
static TreeViewItem GetItemAndScrollIntoView(TreeView tree, ItemsControl parent, int i) { var box = VisualTreeHelper.GetDescendantBounds(tree); var peer = ItemsControlAutomationPeer.CreatePeerForElement(tree); var scrollProvider = peer.GetPattern(PatternInterface.Scroll) as IScrollProvider; var direction = ScrollAmount.SmallIncrement; bool min1 = false; bool max1 = false; while (true) { var item = parent.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem; if (item != null) { item.BringIntoView(); InvokeUtility.DoEvents(); var top = item.TranslatePoint(new Point(), tree); if (box.Contains(new Point(box.X, top.Y + item.ActualHeight / 2))) { return(item); } } if (scrollProvider.VerticalScrollPercent == 100) { if (max1) { direction = ScrollAmount.SmallDecrement; } else { max1 = true; } } if (direction == ScrollAmount.SmallDecrement && scrollProvider.VerticalScrollPercent == 0) { if (min1) { if (item != null) { return(item); } throw new NotSupportedException(ResourcesLocal3.Instance.ErrorNotFoundItem); } else { min1 = true; } } if (!scrollProvider.VerticallyScrollable) { if (item != null) { return(item); } } scrollProvider.Scroll(ScrollAmount.NoAmount, direction); InvokeUtility.DoEvents(); } }
/// public RibbonGalleryItemDataAutomationPeer(object owner, ItemsControlAutomationPeer itemsControlAutomationPeer, RibbonGalleryCategoryDataAutomationPeer parentCategoryDataAutomationPeer) : base(owner, itemsControlAutomationPeer) { _parentCategoryDataAutomationPeer = parentCategoryDataAutomationPeer; }
protected ItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer) : base((FrameworkElement)itemsControlAutomationPeer.Owner) { }
public TreeGridRowDataItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer) : base(item, itemsControlAutomationPeer) { }
/// public RibbonGalleryCategoryDataAutomationPeer(object owner, ItemsControlAutomationPeer itemsControlAutomationPeer) : base(owner, itemsControlAutomationPeer) { }
public PropertyItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer) : base(item, itemsControlAutomationPeer) { }
public AccessibleItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer) : base(item, itemsControlAutomationPeer) { }
/// <summary> /// Initializes a new instance of the TreeViewItemDataAutomationPeer class. /// </summary> /// <param name="item">The TreeViewItem.</param> /// <param name="parent">The TreeViewList parent control instance for which to create the peer.</param> public TreeViewItemDataAutomationPeer(object item, ItemsControlAutomationPeer parent) : base(item, parent) { }
public CookiecutterDataItemAutomationPeer(CookiecutterTreeView treeView, object item, ItemsControlAutomationPeer itemsControlAutomationPeer, TreeViewDataItemAutomationPeer parentDataItemAutomationPeer) : base(item, itemsControlAutomationPeer, parentDataItemAutomationPeer) { _treeView = treeView; }
public CookiecutterInvokableDataItemAutomationPeer(CookiecutterTreeView treeView, object item, ItemsControlAutomationPeer itemsControlAutomationPeer, TreeViewDataItemAutomationPeer parentDataItemAutomationPeer) : base(treeView, item, itemsControlAutomationPeer, parentDataItemAutomationPeer) { }
/// <summary> /// Initialises a new instance of the <see cref="AccordionItemAutomationPeer"/> class. /// </summary> /// <param name="item">The item associated with this AutomationPeer</param> /// <param name="itemsControlAutomationPeer">The Accordion that is associated with this item.</param> public AccordionItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer) : base(item, itemsControlAutomationPeer) { }