C#DynamicData和WhenPropertyChanged-初始化集合时跳过初始值



我有一个简单的代码:

class ItemViewModel : ReactiveObject
{
private string _name;
private string _value;
public ItemViewModel(string name, string value)
{
_name = name;
_value = value;
}
public string Name
{
get => _name;
set => this.RaiseAndSetIfChanged(ref _name, value);
}
public string Value
{
get => _value;
set => this.RaiseAndSetIfChanged(ref _value, value);
}
}
IObservable<IChangeSet<ItemViewModel>> changeSet = CreateChangeSet();

我想对更改集中任何对象的Value属性的任何更改做出反应,并使用新值执行某些操作。我试过这样:

changeSet 
.WhenPropertyChanged(x => x.Value)
.DistinctUntilChanged()
.Subscribe(value =>
{
// do sth with value
});

但是CCD_ 2在初始化集合时为每个项目提供初始值,我希望避免这种情况。我该怎么做?

您只需要将notifyOnInitialValue参数设置为false。默认情况下是这样。我刚刚尝试了一个沙盒控制台应用程序作为健全性检查,它确实如预期的那样工作。

changeSet
.WhenPropertyChanged(x => x.Value, notifyOnInitialValue: false)

来源:https://github.com/reactiveui/DynamicData/blob/63960b0fa7bd0362c40e137498cd0014ba02f3dc/src/DynamicData/Binding/NotifyPropertyChangedEx.cs#L59

相关内容

  • 没有找到相关文章

最新更新