我有一个场景,我有一个MainWindow.xaml。此窗口包含菜单(最初禁用)和用户控件。在其中一个用户控件上,我有一个登录按钮,单击Login弹出窗口打开。成功登录后,我想启用我的主窗口禁用菜单项。如何在WPF MVVM中实现此功能?
答案 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框架都有这样的服务:
如果没有。
您可以组装自己的事件聚合器 以下是一些有助于此类自制程序实现的来源: