前書いたのだと、毎回毎回内容をクリアしてるのでReactiveCollectionのうまみがほとんどないよね!ということなので、初期化して読み込みと続きのデータを読み込むとかいう例を書いてみました。参照設定とかネームスペースの設定さえしておけばLINQ Padでさくっと動くのも素晴らしいですね。
// 初期化して読み込む var load = new ReactiveCommand(); // 続きを読み込む var loadNext = new ReactiveCommand(); // 結果をためておくコレクション var collection = default(ReactiveCollection<string>); collection = Observable .Merge( load.Do(_ => collection.Clear()), // loadコマンドはコレクションをクリアして続きの処理をやる loadNext) // loadNextはコレクションはいじらずに続きの処理をやる .Select(_ => Enumerable.Range(1, 5).ToObservable()) // データとって .Switch() .Select(i => string.Format("{0}歳", i)) // 加工して .ToReactiveCollection(); // コレクションにするよ // 初期状態の出力 collection.Dump(); // 最初の読み込み load.Execute(null); collection.Dump(); // 続きのデータの読み込み loadNext.Execute(null); collection.Dump(); // データを初期化して読み込み load.Execute(null); collection.Dump();
実行結果は以下のような感じ。
# 実行結果 #で始まる行は私が追記してます # 初期状態では0件 ReactiveCollection<String> (0 items) # loadコマンドを実行すると5件読み込まれる 5ReactiveCollection<String> (5 items) 1歳 2歳 3歳 4歳 5歳 # loadNextコマンドを実行するとつづけて5件読み込まれる 5ReactiveCollection<String> (10 items) 1歳 2歳 3歳 4歳 5歳 1歳 2歳 3歳 4歳 5歳 # loadコマンドを実行すると中身がクリアされてデータが読み込まれる 5ReactiveCollection<String> (5 items) 1歳 2歳 3歳 4歳 5歳
パズル組んでるみたいで楽しいですね!