美好的一天!
我在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,我看不到任何方法来覆盖给我这个功能。
谁已经这样做了?如果有更好的方法,那么我已经做了,请告诉我。
答案 0 :(得分:0)
我最终要做的是通过公开的_clockEventViewModel调用我需要的方法。实际上,这比我想象的要容易。