属性 在特定条件下更改时如何使 ReactiveUI Select

How to make the ReactiveUI Select when property changed in specific conditions

我在 WPF 中使用 ReactiveUI,我有一个绑定到 SearchResults

的列表框

现在我想要 SearchResults 在两个属性中的任何一个发生变化时发生变化,所以我这样做了

_searchResults = this.WhenAnyValue(x => x.SearchTerm, x => x.SelectedItem.Deleted)
                .Select(item => item)
                .Select(item => SearchProjects(item.Item1))
                .ObserveOn(RxApp.MainThreadScheduler)
                .ToProperty(this, x => x.SearchResults);

但我想为此添加一些附加条件。

我只想在 Deletedfalse 变为 true 时 select 值。

谁能告诉我该怎么办,谢谢!!!

完整的流程是:

我有一个带有数据源的列表框,数据源行有 属性 Deleted。单击 SelectedItem 的删除按钮后,我对数据库做了一些操作,并通过将 SelectedItem.Deleted 更改为 true 来刷新列表框数据源。整个过程跟我想的一样

但最后,当我select列表框的另一个项目时,它会刷新,因为Deleted变成了false。我必须再次 select 该项目 因为这次刷新。

所以我希望它仅在 Deletedfalse 更改为 true

时触发

为了有需要的人,我解决了:

_searchResults = this.WhenAnyValue(x => x.SearchTerm)
                .CombineLatest(this.WhenAnyValue(x => x.SelectedItem.Deleted)
                                   .Buffer(2, skip: 1)
                                   .Where(item => item[1] == true))
                .Select(item => item.First)
                .Select(item => SearchProjects(item))
                .ObserveOn(RxApp.MainThreadScheduler)
                .ToProperty(this, x => x.SearchResults);

SelectedItem.Deleted = true;

_searchResults = this.WhenAnyValue(x => x.SearchTerm)
                .CombineLatest(this.WhenAnyValue(x => x.SelectedItem.Deleted)
                                   .Buffer(2))
                .Select(item => item.First)
                .Select(item => SearchProjects(item))
                .ObserveOn(RxApp.MainThreadScheduler)
                .ToProperty(this, x => x.SearchResults);

SelectedItem.Deleted = true;

SelectedItem.Deleted = true;是为了触发一次,以便能够观察到后续的变化。