1
我的問題是針對ReactiveUI給出的「令人信服的例子」,當人在搜索欄中輸入時,搜索異步發生。假設我想爲我的用戶提供刷新當前搜索結果的方法。我可以讓他們在搜索欄中退格並重新輸入他們的最後一個字符。但是,他們要求提供「刷新」按鈕,因爲他們不清楚如何刷新當前結果。ReactiveUI「令人信服的例子」如何刷新搜索結果
我想不出如何例子的範圍內做到這一點:
public class TheViewModel : ReactiveObject
{
private string query;
private readonly ObservableAsPropertyHelper<List<string>> matches;
public TheViewModel()
{
var searchEngine = this.ObservableForProperty(input => input.Query)
.Value()
.DistinctUntilChanged()
.Throttle(TimeSpan.FromMilliseconds(800))
.Where(query => !string.IsNullOrWhiteSpace(query) && query.Length > 1);
var search = searchEngine.SelectMany(TheSearchService.DoSearchAsync);
var latestResults =
searchEngine.CombineLatest(search, (latestQuery, latestSearch) => latestSearch.Query != latestQuery ? null : latestSearch.Matches)
.Where(result => result != null);
matches = latestResults.ToProperty(this, result => result.Matches);
}
public string Query
{
get
{
return query;
}
set
{
this.RaiseAndSetIfChanged(ref query, value);
}
}
public List<string> Matches
{
get
{
return matches.Value;
}
}
}
有沒有人對我如何從一個按鈕捕獲命令和任何建議重新執行現有的搜索沒有清除他們目前的搜索文本?