【发布时间】:2013-07-04 04:16:53
【问题描述】:
我正在尝试学习 Prism Navigation 支持。目前,我有一个棱镜区域,我想使用 RegionManager.RequestNavigate() 将视图加载到该区域。导航确实发生了,但是不调用 INavigationAware 的 IsNavigationTarget(),即使 Navigation Target 视图的 ViewModel 实现了 INavigationAware 接口。这是我正在使用的代码。
壳牌:
<StackPanel Margin="10">
<TextBlock Text="Main Window"/>
<Button Content="RegionA" Command="{Binding NavigateToACommand}" />
<ContentControl prism:RegionManager.RegionName="MainRegion"/>
</StackPanel>
ShellViewModel:
private void NavigateToA () {
Uri uri = new Uri("RegionAView", UriKind.Relative);
RegionManager.RequestNavigate("MainRegion", uri);
}
区域视图:
<UserControl x:Class="NavigationExample.RegionAView"
<Grid>
<TextBlock Text="This is Region A"/>
</Grid>
</UserControl>
RegionAViewModel
public class RegionAViewModel : INavigationAware{
public RegionAViewModel() {
}
public bool IsNavigationTarget(NavigationContext navigationContext) {
return false; //Not Invoked
}
public void OnNavigatedTo(NavigationContext navigationContext) {
//Gets Invoked
}
}
RegionAView.xaml.cs
[Export("RegionAView")]
public partial class RegionAView : UserControl {
public RegionAView() {
InitializeComponent();
}
}
为什么在导航完成之前没有调用 IsNavigationTarget()?
【问题讨论】: