C# 如何平滑导航到其他全景项目
在全景应用程序中,我添加了两种情况,用户被导航回某个全景项目。然而,这是在一个突然的运动。有没有一种方法可以让我更顺利地完成这个动作,并进行某种形式的过渡?或者类似的东西?这个代码对我有用C# 如何平滑导航到其他全景项目,c#,windows-phone-7,animation,windows-phone-8,panorama-control,C#,Windows Phone 7,Animation,Windows Phone 8,Panorama Control,在全景应用程序中,我添加了两种情况,用户被导航回某个全景项目。然而,这是在一个突然的运动。有没有一种方法可以让我更顺利地完成这个动作,并进行某种形式的过渡?或者类似的东西?这个代码对我有用 SlideTransition slideTransition = new SlideTransition(); slideTransition.Mode = SlideTransitionMode.SlideRightFadeIn; ITransition transition = slideTransit
SlideTransition slideTransition = new SlideTransition();
slideTransition.Mode = SlideTransitionMode.SlideRightFadeIn;
ITransition transition = slideTransition.GetTransition(panorama_main);
transition.Completed += delegate
{
transition.Stop();
};
PanoramaItem pItem = (PanoramaItem)panorama_main.Items[3];
panorama_main.DefaultItem = pItem;
transition.Begin();
从Inder Kumar Rathore的答案和本页中的答案中,我得出以下结论:
#region navigation
public enum MainPanoramaItem
{
None = -1, Mag, Scan, Account, Lists, More, Help, MainPanoramaItemCount
}
public void PanoramaNavigateTo(MainPanoramaItemitem)
{
int count = (int)MainPanoramaItem.MainPanoramaItemCount;
int toPosition = (int)item;
int nowPosition = panorama.SelectedIndex;
bool left = false;
if(nowPosition > toPosition){
int rightDelta = count - nowPosition + toPosition;
int leftDelta = nowPosition - toPosition;
left = rightDelta > leftDelta;
} else {
int leftDelta = count - nowPosition + toPosition;
int rightDelta = nowPosition - toPosition;
left = rightDelta > leftDelta;
}
SlideTransition slideTransition = new SlideTransition();
slideTransition.Mode = left ? SlideTransitionMode.SlideLeftFadeOut : SlideTransitionMode.SlideRightFadeOut;
ITransition transition = slideTransition.GetTransition(panorama);
transition.Completed += delegate
{
transition.Stop();
SlideTransition slideTransitionIn = new SlideTransition();
slideTransitionIn.Mode = left ? SlideTransitionMode.SlideLeftFadeIn : SlideTransitionMode.SlideRightFadeIn;
ITransition transitionIn = slideTransitionIn.GetTransition(panorama);
transitionIn.Completed += delegate { transitionIn.Stop(); };
panorama.SetValue(Panorama.SelectedItemProperty, panorama.Items[(int)item]);
Panorama temp = panorama;
LayoutRoot.Children.Remove(panorama);
LayoutRoot.Children.Add(temp);
LayoutRoot.UpdateLayout();
transitionIn.Begin();
};
transition.Begin();
}
protected override void OnBackKeyPress(CancelEventArgs e)
{
if (panorama.DefaultItem != panorama.Items[(int)PanoramaItem.Mag])
{
PanoramaNavigateTo(PanoramaItem.Mag);
e.Cancel = true;
}
}
#endregion
在MainPage.xaml.cs中
它使用淡入淡出,然后淡入,并将全景的标题保持在其原始位置。
我还不确定它对实际应用程序的反应,因为我的应用程序是空的。有点晚了,但出于兴趣,您如何在XAML中定义这些
SlideTransition
s?