在WPF MVVM中的子按钮登录事件上启用父窗口菜单

时间:2015-05-11 11:34:54

标签: c# wpf xaml mvvm

我有一个场景,我有一个MainWindow.xaml。此窗口包含菜单(最初禁用)和用户控件。在其中一个用户控件上,我有一个登录按钮,单击Login弹出窗口打开。成功登录后,我想启用我的主窗口禁用菜单项。如何在WPF MVVM中实现此功能?

1 个答案:

答案 0 :(得分:0)

您使用的是任何类型的MVVM框架吗?

如果是这样。

他们中的大多数都有某种活动服务。例如,Caliburn.Micro有EventAggregator。

我会在子视图模型中调用此类事件,并在父视图中订阅它。 在您的场景中,它将是类似的(在Caliburn.Micro中):

class ChildViewModel
{
    ...
    public void HandleLogin()
    {
        ...
        _eventAggregator.Publish(new LoginEventArgs);
    }
}

class ParentViewModel : IHandle<LoginEventArgs>
{
    public void Handle(LoginEventArgs args)
    {
        ..
    }
}

通过使用此类事件服务,您可以实现ViewModel的分离,并获得更大的灵活性,因为您可以在应用程序的其他视图模型中处理此类LoginEvent。

如前所述,许多MVVM框架都有这样的服务:

如果没有。

您可以组装自己的事件聚合器 以下是一些有助于此类自制程序实现的来源: