如何订阅Prism的Navigated活动?

时间:2016-05-04 12:52:27

标签: c# wpf mvvm prism

我试过这个:

public MyViewModel()
{
     eventAggregator.GetEvent<ImportProgressReadyEvent().Subscribe(SubscriberMethod);   
}

并且它可以正常工作,但是在页面导航和可见之前,SubscriberMethod()当然会在构造时被调用。有没有办法订阅一些事件处理程序(我假设它是'导航')一旦导航完成后会被调用?所以在我的ViewModel中我有这样的东西:

private void WhenNavigated()
        {
            eventAggregator.GetEvent<ImportProgressReadyEvent>().Subscribe(SubscriberMethod);
        }

1 个答案:

答案 0 :(得分:1)

您提到要在viewmodel中了解此事件,因此我认为您正在寻找INavigationAware界面。它有三种方法:

public interface INavigationAware
{
    bool IsNavigationTarget(NavigationContext navigationContext);
    void OnNavigatedFrom(NavigationContext navigationContext);
    void OnNavigatedTo(NavigationContext navigationContext);
}

导航视图后,OnNavigatedTo将被触发,并且导入/创建了具有接口的视图模型。您也可以使用NavigationContext参数在视图之间传递信息。

相关问题