Caliburn.Micro& Windows Phone 8.1:如何将参数传递给导航GoBack()方法?

时间:2015-05-18 07:00:01

标签: navigation windows-phone-8.1 caliburn.micro

我有一个WP 8.1(原生)应用程序,我使用Caliburn。微。 在MainPageViewModel中,我导航到另一个页面,我想在MyObject(MainPageViewModel上的属性)上设置一些值并将其推回到MainPageViewModel。

所以我通过传递myObject导航到新页面(它正常工作):

navigationService.NavigateToViewModel<AnotherPageViewModel>(myObject)

在AnotherPageViewModel中,我将一些值设置为myObject,然后返回MainPageViewModel:

navigationService.GoBack();

但是如何将更改的myObject传递回MainPageViewModel?当我回来时,创建了MainPageViewModel中的myObject的新实例。

编辑: 我希望&#34;改变&#34; myObject将在调用GoBack()方法后将更改的值保存在MainPageViewModel中,但显然会创建一个新实例。

由于

1 个答案:

答案 0 :(得分:1)

有两件事情浮现在脑海中。

如果MainPageView没有将NavigationCacheMode设置为Required,那么在导航回来时会创建一个新的MainPageView和MainPageViewModel实例。在这种情况下,我建议你在其他地方(设置等)的AnotherPageViewModel中选择后保存值,然后在MainPageViewModel激活时加载

如果MainPageView将NavigationCacheMode设置为Required,则导航时不会重新创建MainPageViewModel。在这种情况下,我建议您使用消息传递(IEventAggregator)。您可以向MainPageViewModel发送消息,通知该对象已更改,您可以在消息中包含整个新对象。