КогдаAnyValue не вызывается RaisePropertyChanged - PullRequest
0 голосов
/ 28 марта 2020

Я новичок в ReactiveUI вместе с DynamicData

Декларация

 ReadOnlyObservableCollection<Employee> itemSource;
     public ReadOnlyObservableCollection<Employee> ItemSource
     {
        get => itemSource;
     }
     SourceList<Employee> Employees = new SourceList<Employee>();

Реализация

Employees
    .Connect()
    .Sort(SortExpressionComparer<Employee>.Ascending(emp => emp.ID))
    .Bind(out itemSource)
    .ObserveOn(RxApp.MainThreadScheduler)
    .Do(_ =>
         {
              this.RaisePropertyChanged(nameof(ItemSource));
         })
    .DisposeMany()
    .Subscribe()
    .DisposeWith(disposable);

  this.WhenAnyValue(x => x.itemSource)
      .Do(_ =>
    {
        Debug.Print("Called");

    });

Но всякий раз, когда я звоню

Employees.Add(new Employee
  {
    Name = "Hello" + DateTime.Now.ToShortDateString(),
    ID = random.Next(1,1000)
 });

Я ожидаю, что в окне отладки будет напечатано «Called», так как this.WhenAnyValue должен вызываться, но, очевидно, это не тот случай.

Не могли бы вы помочь мне понять, если я делаю какую-либо ошибку?

1 Ответ

1 голос
/ 31 марта 2020

Спасибо, Глен. Я смог это исправить используя код ниже

this.WhenAnyValue(x => x.itemSource.Count)
      .Do(_ =>
    {
        Debug.Print("Called");

    });
...