我是.NET / c#领域的新手,我正在尝试开发Windows Phone 8应用程序。
我有几个页面显示了对象列表(ListPage
)。所有这些页面都具有过滤功能,使用commom FilterPage
。
我需要的是将对象从ListPage
传递到FilterPage
。
我想使用MVVM(MVVM灯光模板)。我已经设法使用Messaging框架实现几乎所有内容。我正在使用一个FilterMessage
来获取在其构造函数中传递的对象。
ListPage
和FilterViewModel
会收听此消息。 ListPage
将导航至FilterPage
,FilterViewModel
将从邮件中获取对象。
ListPage
已正确通知,但FilterViewModel
未收到通知,因为FilterViewModel
仅在首次显示FilterPage
后才会生成。
是否可以通过App start初始化FilterViewModel? 如果您认为这不是要走的路,请告诉我原因:)
提前致谢。
答案 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>();
}