Example #1
0
        /// <summary>
        /// Determines whether the treeviewitem is on current page.
        /// </summary>
        /// <param name="treeViewItem">The tree view item.</param>
        /// <param name="itemsHostRect">The items host rect.</param>
        /// <param name="treeViewItemRect">The tree view item rect.</param>
        /// <returns>
        /// 	<c>true</c> if the treeview is on current page otherwise, <c>false</c>.
        /// </returns>
        private bool IsOnCurrentPage(TreeViewItem treeViewItem, out Rect itemsHostRect, out Rect treeViewItemRect)
        {
            // Get Rect for item host element
            FrameworkElement itemsHost = this.elementScrollViewer;

            itemsHostRect = new Rect(new Point(), new Point(itemsHost.RenderSize.Width, itemsHost.RenderSize.Height));

            // Adjust Rect to account for padding
            Control itemsHostControl = itemsHost as Control;
            if (null != itemsHostControl)
            {
                Thickness padding = itemsHostControl.Padding;
                itemsHostRect = new Rect(
                    itemsHostRect.Left + padding.Left,
                    itemsHostRect.Top + padding.Top,
                    Math.Max(0, itemsHostRect.Width - padding.Left - padding.Right),
                    Math.Max(0, itemsHostRect.Height - padding.Top - padding.Bottom));
            }

            // Get relative Rect for ListBoxItem
            GeneralTransform generalTransform = treeViewItem.TransformToVisual(itemsHost);
            treeViewItemRect = new Rect(generalTransform.Transform(new Point()), generalTransform.Transform(new Point(treeViewItem.RenderSize.Width, treeViewItem.RenderSize.Height)));

            // Return result
            return ((itemsHostRect.Top <= treeViewItemRect.Top) && (treeViewItemRect.Bottom <= itemsHostRect.Bottom));
        }