带有非字符串参数的Windows Phone 8 MVVM光导航

时间:2013-04-07 12:27:18

标签: c# .net mvvm windows-phone-8 mvvm-light

我是.NET / c#领域的新手,我正在尝试开发Windows Phone 8应用程序。 我有几个页面显示了对象列表(ListPage)。所有这些页面都具有过滤功能,使用commom FilterPage

我需要的是将对象从ListPage传递到FilterPage。 我想使用MVVM(MVVM灯光模板)。我已经设法使用Messaging框架实现几乎所有内容。我正在使用一个FilterMessage来获取在其构造函数中传递的对象。 ListPageFilterViewModel会收听此消息。 ListPage将导航至FilterPageFilterViewModel将从邮件中获取对象。 ListPage已正确通知,但FilterViewModel未收到通知,因为FilterViewModel仅在首次显示FilterPage后才会生成。

是否可以通过App start初始化FilterViewModel? 如果您认为这不是要走的路,请告诉我原因:)

提前致谢。

2 个答案:

答案 0 :(得分:1)

我在这种情况下所做的是将您要传递到另一页的实例添加到PhoneApplicationService.Current.State下的Session对象中。

完成导航后,您可以提取实例,然后将其从州中删除。

请注意,如果您的应用程序在状态中有实例后进入后台,WP将尝试序列化它们。

答案 1 :(得分:1)

我设法通过在FilterViewModel构造函数中创建ViewModelLocator实例来使其工作。我不确定这是最好的方法。希望有经验的人能与我们分享他的想法。

public ViewModelLocator()
{
    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

    SimpleIoc.Default.Register<FilterViewModel>();

    ServiceLocator.Current.GetInstance<FilterViewModel>();
}