C# DynamicData и WhenPropertyChanged - пропускать начальное значение при инициализации коллекции - PullRequest
0 голосов
/ 14 июля 2020

У меня есть простой код:

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 предоставляет начальное значение для каждого элемента при инициализации коллекции, и я хочу избежать этого. Как я могу это сделать?

1 Ответ

1 голос
/ 16 июля 2020

Вам просто нужно установить для параметра notifyOnInitialValue значение false. По умолчанию это правда. Я просто пробовал использовать консольное приложение для песочницы в качестве проверки работоспособности, и оно действительно работает, как ожидалось.

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

Источник: https://github.com/reactiveui/DynamicData/blob/63960b0fa7bd0362c40e137498cd0014ba02f3dc/src/DynamicData/Binding/NotifyPropertyChangedEx.cs#L59

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...