static public void Showing(Page page, Windows.UI.ViewManagement.InputPane sender, Windows.UI.ViewManagement.InputPaneVisibilityEventArgs args) { const double extraHeightBuffer = 20.0; UIElement focused = FocusManager.GetFocusedElement() as UIElement; if (null != focused) { GeneralTransform gt = focused.TransformToVisual(page); Point focusedPoint = gt.TransformPoint(new Point(0, focused.RenderSize.Height - 1)); double bottomOfFocused = focusedPoint.Y + extraHeightBuffer; double windowHeight = Window.Current.Bounds.Height; double topOfInputPane = windowHeight - args.OccludedRect.Height; if (bottomOfFocused > topOfInputPane) { var trans = new TranslateTransform(); trans.Y = -(bottomOfFocused - topOfInputPane); page.RenderTransform = trans; } args.EnsuredFocusedElementInView = true; } }