在WPF MVVM中启用父窗口菜单



我有一个方案,我有一个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

最新更新