【发布时间】:2015-11-09 11:08:20
【问题描述】:
我正在使用 WPF 和 ReactiveUI 实现一个典型的主从 GUI 模式。我想保持主视图模型和细节视图模型相互解耦,而不使用像消息总线这样更脆弱和间接的东西。但是有些东西不起作用。
我有两个问题:
- 为什么
WhenAnyValue在我下面的代码中不起作用? - 什么是 实施解耦主细节的推荐方法 现在的 ReactiveUI?
代码:
public class ShellViewModel : ReactiveObject
{
public ShellViewModel(OrderListViewModel orderListViewModel, OrderDetailsViewModel orderDetailsViewModel)
{
OrderListViewModel = orderListViewModel;
OrderDetailsViewModel = orderDetailsViewModel;
this.WhenAnyValue(x => x.OrderListViewModel.SelectedOrderHeader).Do(h =>
{
OrderDetailsViewModel.Set(h);
});
}
public OrderListViewModel OrderListViewModel { get; }
public OrderDetailsViewModel OrderDetailsViewModel { get; }
}
我省略了两个底层视图模型和相关视图,因为它们非常典型(可观察列表 + 选定项属性)并且它们本身似乎工作正常。
更新:#1 可以通过使用Subscribe 而不是Do 来“修复”。不知道后者的目的是什么?
【问题讨论】:
-
OrderListViewModel.SelectedOrderHeader 中有你的 RaiseAndSet.. 吗?
-
@tagaPdyk 谢谢,但这不是问题,我已经用我的最新发现更新了这个问题。
标签: wpf mvvm system.reactive master-detail reactiveui