我有以下伪视图模型:
public class DummyViewModel : ReactiveObject
{
internal DummyViewModel()
{
ItemChanged.Subscribe(_ => Console.WriteLine());
}
public IObservable<string> ItemChanged
{
get { return this.WhenAnyValue(x => x.Item).Select(s => s); }
}
private string _item;
public string Item
{
get { return _item; }
set { this.RaiseAndSetIfChanged(ref _item, value); }
}
}
当我创建这个类的新实例时,可观察对象在订阅时立即触发,返回null(没有任何东西绑定到Item)。这在我更高级的视图模型中造成了一个问题,在这个模型中,我有多个需要以不同方式链接在一起的可观察对象。我一直在使用Skip和StartWith的组合,但它变得相当复杂。有人能告诉我为什么会发生这种情况,以及我是否应该考虑其他方法吗?
我想这只是"设计"。CCD_ 1和朋友总是返回初始值。这在大多数情况下都是有意义的——例如,如果在末尾使用ToProperty
,并且通常希望您的属性具有初始值。
显然,我不知道你的应用程序的详细信息,但我有两个大小合理的应用程序,想不出需要跳过初始值的时间。
在内部,WhenAny
委托给ObservableForProperty
,而ObservableForProperty
有一个skipInitial
参数。所以你可以用它。或者只是.Skip(1)
。