C# 检测是否在NavigationContext中调用了GoBack()
在实现IConfirmNavigationRequest的视图中,我使用了四个导航转换动画:ForwardIn、ForwardOut、backardin和backardOut 我使用ConfirmNavigationRequest在导航之前等待Out转换完成。但是,根据导航类型(使用RequestNavigate()向前或使用GoBack()向后),我想播放不同的故事板:C# 检测是否在NavigationContext中调用了GoBack(),c#,.net,wpf,prism,C#,.net,Wpf,Prism,在实现IConfirmNavigationRequest的视图中,我使用了四个导航转换动画:ForwardIn、ForwardOut、backardin和backardOut 我使用ConfirmNavigationRequest在导航之前等待Out转换完成。但是,根据导航类型(使用RequestNavigate()向前或使用GoBack()向后),我想播放不同的故事板: public void ConfirmNavigationRequest(NavigationContext nav
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();
}
public void ConfirmNavigationRequest(NavigationContext NavigationContext,Action continuationCallback)
{
故事板;
如果(navigationContext./*是否调用了RequestNavigate()或GoBack()?*/)
{
//返回导航请求。
情节提要=((情节提要)FindResource(RegionTransitions.backardout));
}
其他的
{
//前向导航请求。
情节提要=((情节提要)FindResource(RegionTransitions.ForwardOut));
}
情节提要.Completed+=(发送方,参数)=>continuationCallback(true);
故事板。开始();
}
是否有任何准确且可预测的方法来检测NavigationContext使用了哪种类型的导航
编辑:我已经放弃使用IConfirmNavigation进行转换,现在使用的是AnimatedContentControl
我不太喜欢它,但我发布了一个事件来“警告”AnimatedContentControl下一次导航应该使用特定的转换:
_eventAggregator.GetEvent<RegionTransitionEvent>().Publish(new RegionTransitionEventArgs { RegionName = RegionNames.NavRegion, RegionTransition = RegionTransitions.BackwardIn });
_regionManager.RequestNavigate(RegionNames.ContentRegion, ViewNames.ABC);
\u eventAggregator.GetEvent().Publish(新RegionTransitionEventArgs{RegionName=RegionNames.NavRegion,RegionTransition=RegionTransitions.Backardin});
_regionManager.RequestNavigate(RegionNames.ContentRegion,ViewNames.ABC);
您可以在视图或viewmodel中实现iAvigationAware
界面
此接口将实现3种方法
public interface INavigationAware
{
void OnNavigatedTo(NavigationContext navigationContext);
bool IsNavigationTarget(NavigationContext navigationContext);
void OnNavigatedFrom(NavigationContext navigationContext);
}
将允许您确定它是否是往返于某处的导航。您甚至可以确定导航来自哪个视图。谢谢,但IConfirmNavigationRequest实现了INavigationAware。我问的是传递到这些方法中的NavigationContext,以及是否可以检测用户是导航到新页面还是向后导航到上一页面。简单地说,没有。我查看了导航章节,似乎找不到任何可以检测您是使用GoBack还是GoForward的内容。但是,当然也有一些“肮脏”的方法。你能找到解决问题的方法吗。我还想知道导航是否由反向导航产生?