C# DynamicData 和 WhenPropertyChanged - 初始化集合时跳过初始值
C# DynamicData and WhenPropertyChanged - skip initial value when collection is initialized
我有一个简单的代码:
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
});
但是 WhenPropertyChanged
在初始化集合时为每个项目提供初始值,我想避免这种情况。我该怎么做?
您只需将notifyOnInitialValue 参数设置为false。默认情况下是正确的。我刚刚在沙盒控制台应用程序中尝试进行健全性检查,它确实按预期工作。
changeSet
.WhenPropertyChanged(x => x.Value, notifyOnInitialValue: false)
我有一个简单的代码:
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
});
但是 WhenPropertyChanged
在初始化集合时为每个项目提供初始值,我想避免这种情况。我该怎么做?
您只需将notifyOnInitialValue 参数设置为false。默认情况下是正确的。我刚刚在沙盒控制台应用程序中尝试进行健全性检查,它确实按预期工作。
changeSet
.WhenPropertyChanged(x => x.Value, notifyOnInitialValue: false)