我有一个方案,我有一个mainwindow.xaml。此窗口具有菜单(最初是禁用的)和用户控件。在一个用户控件上,我有一个登录按钮单击哪个登录弹出窗口打开。成功登录后,我想启用主窗口禁用的菜单项。如何在WPF MVVM中实现此功能?
您是否使用任何类型的MVVM框架?
如果是这样。
他们中的大多数都有某种o事件服务。例如caliburn.micro具有EventAggregator。
我会在儿童视图模型中调用此类事件,并在父级中订阅。在您的情况下,这将是类似的(在caliburn.micro中):
class ChildViewModel
{
...
public void HandleLogin()
{
...
_eventAggregator.Publish(new LoginEventArgs);
}
}
class ParentViewModel : IHandle<LoginEventArgs>
{
public void Handle(LoginEventArgs args)
{
..
}
}
使用此类事件服务,您可以将视图模型分开,并且您可以在应用程序中的其他视图模型中处理此类loginevents。
如许多MVVM框架提供了这样的服务:
- 卡利本
- 棱镜
- MVVM Light
如果不是。
您可以组装自己的活动聚合器。
以下是一些来源,可以对这种自制实施有所帮助:
- So
- MSDN