从 ChildVM 中获取必要的 ViewModel,并在 ParentVM 中将其设置为 属性

Take necessary ViewModel from ChildVM and set it to property in ParentVM

我的 MainViewModel 看起来像这样

public class MainViewModel : ReactiveObject 
{
    public MenuViewModel MenuVM { get;set; }

    [Reactive] IOverlayViewModel OverlayVM { get;set; } 
}

所以我的问题是在 MainViewModel 和 MenuViewModel 之间进行通信。 MenuViewModel 负责 MenuControl,并且应该根据用户单击哪个按钮来将必要的 ViewModel 设置为 OverlayVM,以显示带有所选菜单项的 Overlay。

那么我应该如何让它工作呢?在 MenuViewModel 中创建事件,在 MainViewModel 中订阅它,并在用户每次单击以 viewmodel 作为参数的菜单项时调用它?帮我找到解决这个问题的最佳方法!

您可以在 MenuViewModel 中定义一个 ReactiveCommand 并在 MainViewModel 中订阅它。像这样:

public class MenuViewModel : ReactiveObject
{
    public ReactiveCommand<Unit, IOverlayViewModel> NavigateCommand { get; }
}

public class MainViewModel : ReactiveObject
{
    public MainViewModel()
    {
        MenuVM.NavigateCommand.Subscribe(viewModel => OverlayVM = viewModel);
    }

    public MenuViewModel MenuVM { get; set; } = new MenuViewModel();

    [Reactive] IOverlayViewModel OverlayVM { get; set; }
}