private void TranslateRootVisualY(int yNew) { var rootFrame = Application.Current.RootVisual as PhoneApplicationFrame; rootFrame.RenderTransform = new CompositeTransform() {TranslateY = yNew}; } In your case, you can eliminate the automatic translation and make ScrollViewer scroll to desired offset in GotFocus event: private void firstNameTxt_GotFocus_1(object sender, RoutedEventArgs e) { TranslateRootVisualY(0); Dispatcher.BeginInvoke(() =>{ double destOffset; //...calculate destination offset ContentPanel.ScrollToVerticalOffset(destOffset); }); }