You can use Windows.Phone.Toolkit and handle OrientationChangedEvent, as shown here:
http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/11/23/windows-phone-7-page-orientation-change-animations.aspx
, , . , :
public partial class MainPage : PhoneApplicationPage
{
PageOrientation lastOrientation;
public MainPage()
{
InitializeComponent();
this.OrientationChanged += new EventHandler<OrientationChangedEventArgs>(MainPage_OrientationChanged);
lastOrientation = this.Orientation;
}
void MainPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
PageOrientation newOrientation = e.Orientation;
Debug.WriteLine("New orientation: " + newOrientation.ToString());
RotateTransition transitionElement = new RotateTransition();
switch (newOrientation)
{
case PageOrientation.Landscape:
case PageOrientation.LandscapeRight:
if (lastOrientation == PageOrientation.PortraitUp)
transitionElement.Mode = RotateTransitionMode.In90Counterclockwise;
else
transitionElement.Mode = RotateTransitionMode.In180Clockwise;
break;
case PageOrientation.LandscapeLeft:
if (lastOrientation == PageOrientation.LandscapeRight)
transitionElement.Mode = RotateTransitionMode.In180Counterclockwise;
else
transitionElement.Mode = RotateTransitionMode.In90Clockwise;
break;
case PageOrientation.Portrait:
case PageOrientation.PortraitUp:
if (lastOrientation == PageOrientation.LandscapeLeft)
transitionElement.Mode = RotateTransitionMode.In90Counterclockwise;
else
transitionElement.Mode = RotateTransitionMode.In90Clockwise;
break;
default:
break;
}
PhoneApplicationPage phoneApplicationPage = (PhoneApplicationPage)(((PhoneApplicationFrame)Application.Current.RootVisual)).Content;
ITransition transition = transitionElement.GetTransition(phoneApplicationPage);
transition.Completed += delegate
{
transition.Stop();
};
transition.Begin();
lastOrientation = newOrientation;
}
}