public static async void FlickHandler(object sender, FlickGestureEventArgs e, ViewModelBase currentViewModel, UIElement rootPage)
{
try
{
if (_flicking || currentViewModel == null)
return;
if (e.Direction == System.Windows.Controls.Orientation.Vertical)
{
//Up
if (e.VerticalVelocity < -1500)
{
_flicking = true;
try
{
using (ServiceLocator.Current.GetInstance<ISuspendableWorkQueue>().HighValueOperationToken)
{
var next = await StreamViewUtility.Next(GetLinkViewModel(currentViewModel), currentViewModel);
if (next != null)
{
TransitionService.SetNavigationOutTransition(rootPage,
new NavigationOutTransition()
{
Forward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideUpFadeOut
}
}
);
if (next is LinkedPictureViewModel)
{
ServiceLocator.Current.GetInstance<INavigationService>().Navigate(typeof(LinkedPictureView), MakeSerializable(next as LinkedPictureViewModel));
}
else if (next is ReadableArticleViewModel)
{
ServiceLocator.Current.GetInstance<INavigationService>().Navigate(typeof(LinkedReadabilityView), MakeSerializable(next as ReadableArticleViewModel));
}
else if (next is LinkViewModel)
{
ServiceLocator.Current.GetInstance<INavigationService>().Navigate(typeof(LinkedSelfTextPageView), MakeSerializable(next as LinkViewModel));
}
}
}
}
finally
{
_flicking = false;
}
}
else if (e.VerticalVelocity > 1500) //Down
{
_flicking = true;
try
{
using (ServiceLocator.Current.GetInstance<ISuspendableWorkQueue>().HighValueOperationToken)
{
var previous = await StreamViewUtility.Previous(GetLinkViewModel(currentViewModel), currentViewModel);
if (previous is LinkedPictureViewModel)
{
ServiceLocator.Current.GetInstance<INavigationService>().Navigate(typeof(LinkedPictureView), MakeSerializable(previous as LinkedPictureViewModel));
}
else if (previous is ReadableArticleViewModel)
{
ServiceLocator.Current.GetInstance<INavigationService>().Navigate(typeof(LinkedReadabilityView), MakeSerializable(previous as ReadableArticleViewModel));
}
else if (previous is LinkViewModel)
{
ServiceLocator.Current.GetInstance<INavigationService>().Navigate(typeof(LinkedSelfTextPageView), MakeSerializable(previous as LinkViewModel));
}
}
}
finally
{
_flicking = false;
}
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
}