从 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; }
}
我的 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; }
}