かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

ReactivePropertyが楽しくて仕方がない

Commandと、その実行結果の紐づけが以下のように流れるようにさっくりと書ける。素敵すぎますよね!!

// LINQ Padで実行

// Commandの定義
var command = new ReactiveCommand();

var collection = default(ReactiveCollection<string>);
collection = command
    .Do(_ => collection.Clear()) // コマンド実行時にコレクションの内容を一旦クリア
    .Select(_ => Enumerable.Range(1, 10).ToObservable()) // モデルからデータをとってきてるつもり
    .Switch() // フラットに
    .Select(i => string.Format("{0}歳", i)) // Viewでの表示用に加工してるつもり
    .ToReactiveCollection(); // 結果をコレクションに

command.Execute(null);
collection.Dump(); // LINQ Padのコンソールに表示するためのメソッド

command.Execute(null);
collection.Dump(); // LINQ Padのコンソールに表示するためのメソッド

こんな感じに書くだけでコマンドが実行された結果、データ(1〜10の値)をとってきて表示用に加工(〜歳)して、コレクションに追加というのが書けるっていいよねという感動を伝えたかっただけです。