Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 6
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;
            }
        }
Esempio n. 7
0
 public RibbonControlDataAutomationPeer(object item, ItemsControlAutomationPeer itemsControlPeer)
     : base(item, itemsControlPeer)
 {
 }
Esempio n. 8
0
        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;
 }
Esempio n. 10
0
 protected ItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer) : base((FrameworkElement)itemsControlAutomationPeer.Owner)
 {
 }
Esempio n. 11
0
 public TreeGridRowDataItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer)
     : base(item, itemsControlAutomationPeer)
 {
 }
Esempio n. 12
0
 ///
 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)
 {
 }
Esempio n. 16
0
 public CookiecutterDataItemAutomationPeer(CookiecutterTreeView treeView, object item, ItemsControlAutomationPeer itemsControlAutomationPeer, TreeViewDataItemAutomationPeer parentDataItemAutomationPeer)
     : base(item, itemsControlAutomationPeer, parentDataItemAutomationPeer)
 {
     _treeView = treeView;
 }
Esempio n. 17
0
 public CookiecutterInvokableDataItemAutomationPeer(CookiecutterTreeView treeView, object item, ItemsControlAutomationPeer itemsControlAutomationPeer, TreeViewDataItemAutomationPeer parentDataItemAutomationPeer)
     : base(treeView, item, itemsControlAutomationPeer, parentDataItemAutomationPeer)
 {
 }
Esempio n. 18
0
 /// <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)
 {
 }