かずきのBlog@hatena

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

ReactiveProperty + F#で簡単なViewModel書いてみたよ

超簡単なやつ。入力があったら1秒後に別プロパティに全部大文字にして出すやつです。

open Codeplex.Reactive
open System
open System.Reactive.Linq

type MainWindowViewModel() =
    // 入力用
    let input = new ReactiveProperty<string>()
    // 出力用
    let output = 
        // 入力されたものを1秒まつ
        input.Delay(TimeSpan.FromSeconds(1.))
        // 大文字に変換する
        |> Observable.map (fun s -> s.ToUpper())
        // IO<T>をReactivePropertyに変換する
        |> ReactiveProperty.ToReactiveProperty

    // 外部にプロパティとして公開する
    member x.Input = input
    member x.Output = output

悪くないくらいすっきりかけそうな気がしますね。