属性 在特定条件下更改时如何使 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);
但我想为此添加一些附加条件。
我只想在 Deleted
从 false
变为 true
时 select 值。
谁能告诉我该怎么办,谢谢!!!
完整的流程是:
我有一个带有数据源的列表框,数据源行有 属性 Deleted
。单击 SelectedItem
的删除按钮后,我对数据库做了一些操作,并通过将 SelectedItem.Deleted
更改为 true
来刷新列表框数据源。整个过程跟我想的一样
但最后,当我select列表框的另一个项目时,它会刷新,因为Deleted
变成了false
。我必须再次 select 该项目
因为这次刷新。
所以我希望它仅在 Deleted
从 false
更改为 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;
是为了触发一次,以便能够观察到后续的变化。
我在 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);
但我想为此添加一些附加条件。
我只想在 Deleted
从 false
变为 true
时 select 值。
谁能告诉我该怎么办,谢谢!!!
完整的流程是:
我有一个带有数据源的列表框,数据源行有 属性 Deleted
。单击 SelectedItem
的删除按钮后,我对数据库做了一些操作,并通过将 SelectedItem.Deleted
更改为 true
来刷新列表框数据源。整个过程跟我想的一样
但最后,当我select列表框的另一个项目时,它会刷新,因为Deleted
变成了false
。我必须再次 select 该项目
因为这次刷新。
所以我希望它仅在 Deleted
从 false
更改为 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;
是为了触发一次,以便能够观察到后续的变化。