4
我正在嘗試學習Prism Navigation支持。目前,我有一個棱鏡區域,我想使用RegionManager.RequestNavigate()來加載視圖到該區域。導航確實發生,但是,即使導航目標視圖的ViewModel實現了INavigationAware接口,INavigationAware的IsNavigationTarget()也不會被調用。這是我正在使用的代碼。棱鏡 - 使用RequestNavigate時未調用IsNavigationTarget
外殼:
<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);
}
RegionAView:
<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()沒有得到調用之前導航的完成?
katit,我想你是對的。如果已經存在一個視圖實例,則會調用IsNavigationTarget()。第一次,OnNavigatedTo()被直接調用,而不需要調用IsNavigationTargert()。那麼,如果我們想要,第一次如何取消導航?非常感謝。 – Jatin 2012-03-23 06:33:50