带有 WPF ViewModel 导航操作的 MVVM Light

MVVM Light with WPF ViewModel Navigation Actions

美好的一天!

我在 WPF 应用程序上使用 MVVM Light。我有一个页面,我正在使用用户控件来提供具有各自视图模型的视图。我正在使用 ViewModelLocator 来连接它们。我已经弄清楚如何通过将 ContentControl 的内容绑定到已设置的可观察对象 属性 来进行导航。这是 XAML:

的片段
<ContentControl Content="{Binding CurrentViewModel}" Grid.Row="1" />

MainViewModel 创建对我的两个不同 ViewModel 的引用:

private ViewModelBase _currentViewModel;
private readonly static LogInViewModel _loginViewModel = new LogInViewModel();
private readonly static ClockEventViewModel _clockEventViewModel = new ClockEventViewModel();

在我的构造函数中,我从其他 ViewModels 注册了一些动作:

_loginViewModel.AllowClockEvent += ExecuteClockEventViewCommand;
_clockEventViewModel.ReturnToLogin += ExecuteLoginViewCommand;

它们在每个 ViewModel 中的实现方式如下:

public Action ReturnToLogin = delegate { };

最后,在这些方法中,我将 CurrentViewModel 设置为不同的 ViewModel。例如:

CurrentViewModel = _clockEventViewModel;

这很好用,但我不能做的是,在另一个视图模型成为当前视图模型后,我想捕获它并做一些初步工作。有点像 NavigateTo 事件。我确定可能有一种简单的方法,但我已经查看了 ViewModelBase 并且我没有看到任何方法来覆盖给我这种能力。

谁做过这个?如果有比我的方法更好的方法,请告诉我。

我最终做的是通过公开的 _clockEventViewModel 调用我需要的方法。其实比我想象的要简单。