我在使用InteractionRequest对象引发的弹出窗口中实现Prism导航。我的主视图包含一个带有2个视图的TabControl区域(视图A,视图b)。主视图如下所示:
<Grid>
<TabControl prism:RegionManager.RegionName="PrivateVehiclePopupRegion">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
</Grid>
视图A包含一个按钮,其中包含一个导航到视图B的命令。同样,视图B包含一个导航到视图A的按钮。 所有三个视图共享相同的视图模型(我确保只创建了一个视图模型实例)。
视图A和视图B在模块的Initialize方法中注册:
public void Initialize()
{
...
RegionManager.RegisterViewWithRegion(RegionNames.PrivateVehiclePopupRegion, typeof(PrivateVehiclePopupReadView)); // View A
RegionManager.RegisterViewWithRegion(RegionNames.PrivateVehiclePopupRegion, typeof(PrivateVehiclePopupEditView)); // View B
}
当我执行程序时,加载了视图A,但是当按下相应的按钮导航到另一个视图时,成功到达NavigateToViewB()方法,但是当调用RequestNavigate时,没有任何反应。我还试图反转注册视图的顺序,因此首先注册View B,并加载View B,但RequestNavigate to A不起作用。
我添加了一个回调方法来调查此问题,如下所示:
private void NavigateToEdit()
{
this.regionManager.RequestNavigate(RegionNames.PrivateVehiclePopupRegion, EditUri,
(NavigationResult nr) =>
{
var error = nr.Error;
var result = nr.Result;
// put a breakpoint here and checkout what NavigationResult contains
});
}
Howerver,Error为null,Result为false ......没有任何说明。有任何想法吗?我以前做过导航并且工作正常,但这是我第一次在弹出窗口上实现导航。