예제 #1
0
        /// <summary>
        /// Causes the element to scroll into view.
        /// </summary>
        /// <param name="element"> The element to scroll. </param>
        /// <exception cref="ArgumentNullException"> The <paramref name="element"/> parameter is null. </exception>
        public static void ScrollIntoView(FrameworkElement element)
        {
            if (element == null)
                throw new ArgumentNullException("element");

            var scrollViewer = element.GetParentByName("FieldsScrollView") as ScrollViewer;
            if (scrollViewer == null)
                return;

            try
            {
                var focusedVisualTransform = element.TransformToVisual(scrollViewer);
                var rectangle =
                    focusedVisualTransform.TransformBounds(new Rect(new Point(element.Margin.Left, element.Margin.Top), element.RenderSize));

                var newOffset = scrollViewer.VerticalOffset + rectangle.Top - 80;
                scrollViewer.ScrollToVerticalOffset(newOffset);
            }
            catch (Exception)
            {
            }
        }
예제 #2
0
        /// <summary>
        /// Scrolls the and focus.
        /// </summary>
        /// <param name="element">The element.</param>
        private static void ScrollAndFocus(FrameworkElement element)
        {
            var scrollViewer = element.GetParentByName("FieldsScrollView") as ScrollViewer;
            if (scrollViewer == null)
                return;

            try
            {
                var focusedVisualTransform = element.TransformToVisual(scrollViewer);
                var rectangle =
                    focusedVisualTransform.TransformBounds(new Rect(new Point(element.Margin.Left, element.Margin.Top), element.RenderSize));

                var newOffset = scrollViewer.VerticalOffset + rectangle.Top - 80;
                scrollViewer.ScrollToVerticalOffset(newOffset);

                var control = element as Control;
                if (control != null && control.IsVisibile())
                {
                    control.Focus();
                }
            }
            catch (Exception)
            {
            }
        }