/// <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) { } }
/// <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) { } }