ReactiveUIを使用して私の最初のステップを踏んでいますが、非常に基本的な例を得ることができません。私は、プロパティ "SearchTerm"が変更されるとすぐにタスクを実行したい。私は、ReactiveUIのgithubページの指示に従った( "説得力のある例")。ReactiveUI:プロパティの変更に反応する
私はビュー内のTextBoxにバインドされたSearchTermプロパティを持つViewModelを持っています。 TextBoxの内容を更新すると、プロパティが予想どおりに更新されます(私はUpdateSourceTrigger=PropertyChanged
を使用しました)。
私の観測でコードが発火することはありません:あなたはどこにでもコマンドを呼び出すされていないため、
public class MainWindowViewModel: ReactiveObject
{
public string SearchTerm
{
get { return m_SearchTerm; }
set { this.RaiseAndSetIfChanged(ref m_SearchTerm, value); }
}
private string m_SearchTerm;
public MainWindowViewModel()
{
SearchResults = new List<string>();
var canSearch = this.WhenAny(x => x.SearchTerm, x => !string.IsNullOrWhiteSpace(x.GetValue()));
var search = ReactiveCommand.CreateAsyncTask(canSearch,
async _ => {
// this is never called
return await dosearch(this.SearchTerm);
});
search.Subscribe(results => {
// this is never called too
SearchResults.Clear();
SearchResults.AddRange(results);
});
}
private async Task<List<string>> dosearch(string searchTerm)
{
await Task.Delay(1000);
return new List<string>() { "1", "2", "3" };
}
public List<string> SearchResults { get; private set; }
}
素晴らしい!ありがとうございました。 –