Prism App导航导致“对象引用”错误

时间:2013-06-16 23:13:50

标签: .net xaml navigation windows-store-apps windows-store

我创建了一个新的Windows应用商店应用项目,并为其添加了Prism。我设置主页面以使用通用基础设施,这一切都很有效。我在Views文件夹中创建了第二个Test页面,名称为TestPage,如下所示:

<Infrastructure:VisualStateAwarePage
 .
 .
    xmlns:Infrastructure="using:Microsoft.Practices.Prism.StoreApps"
    Infrastructure:ViewModelLocator.AutoWireViewModel="True"
    >

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">

    </Grid>
</Infrastructure:VisualStateAwarePage>

在ViewModels文件夹中有一个简单的模型:

public class TestPageViewModel { } 

当我使用导航服务导航到页面时(我在Unity容器中有我的导航服务,如MSDN文档中所述),我得到“对象引用设置为错误的实例”。没有堆栈跟踪指向哪里,没有更多细节...任何想法为什么我得到该错误?同样,测试页面视图和模型的设置与我的主页面相同,但主要工作原理,但我无法在重定向上加载测试。

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

这也常常引起我的注意,并且在众多例子中没有很好地解释。

确保在App.xaml.cs文件中设置IoC容器时,还要告诉ViewModelLocator使用Unity通过SetDefaultViewModelFactory()方法查找View Model实例:

private readonly IUnityContainer _container = new UnityContainer();

protected override void OnInitialize(IActivatedEventArgs args)
{
    base.OnInitialize(args);

    _container.RegisterInstance<INavigationService>(NavigationService); 
    _container.RegisterInstance<ISessionStateService>(SessionStateService);
    _container.RegisterInstance<IFlyoutService>(FlyoutService);
    // etc

    // Tell the Unity ViewModelLocator to use the Unity container to resolve ViewModels
    ViewModelLocator.SetDefaultViewModelFactory((viewModelType) => _container.Resolve(viewModelType));
}

希望有所帮助。