具有WPF ViewModel导航操作的MVVM Light

时间:2015-09-18 22:26:10

标签: wpf xaml mvvm viewmodel light

美好的一天!

我在WPF应用上使用MVVM Light。我有一个页面,我正在使用用户控件来提供各自ViewModel的视图。我正在使用ViewModelLocator来连接它们。我已经想出了如何通过将ContentControl的Content绑定到一个可设置的可观察属性来进行导航。这是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();

在我的构造函数中,我从其他ViewModel注册了一些Actions:

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

它们在每个ViewModel中实现,如下所示:

public Action ReturnToLogin = delegate { };

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

CurrentViewModel = _clockEventViewModel;

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

谁已经这样做了?如果有更好的方法,那么我已经做了,请告诉我。

1 个答案:

答案 0 :(得分:0)

我最终要做的是通过公开的_clockEventViewModel调用我需要的方法。实际上,这比我想象的要容易。