В представлении, которое реализует IConfirmNavigationRequest, я использую четыре анимации переходов навигации: ForwardIn, ForwardOut, BackwardIn и BackwardOut.
Я использую запрос ConfirmNavigationRequest, чтобы дождаться завершения перехода Out перед навигацией.Но, в зависимости от типа навигации - вперед с помощью RequestNavigate () или назад с помощью GoBack () - я хочу играть в разные раскадровки:
public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
{
Storyboard storyboard;
if (navigationContext./* was RequestNavigate() or GoBack() called? */)
{
// GoBack navigation request.
storyboard = ((Storyboard)FindResource(RegionTransitions.BackwardOut));
}
else
{
// Forward navigation request.
storyboard = ((Storyboard)FindResource(RegionTransitions.ForwardOut));
}
storyboard.Completed += (sender, args) => continuationCallback(true);
storyboard.Begin();
}
Существует ли какой-либо точный и предсказуемый способ определить, какой тип навигациибыл использован из NavigationContext?
Редактировать: С тех пор я отказался от использования IConfirmNavigation для переходов и теперь использую AnimatedContentControl.
Мне не очень нравится, но я публикуюсобытие, предупреждающее AnimatedContentControl, что при следующей навигации должен использоваться определенный переход:
_eventAggregator.GetEvent<RegionTransitionEvent>().Publish(new RegionTransitionEventArgs { RegionName = RegionNames.NavRegion, RegionTransition = RegionTransitions.BackwardIn });
_regionManager.RequestNavigate(RegionNames.ContentRegion, ViewNames.ABC);