Livetが予想以上にMVVM矯正装置だった
かたくて おもい ギプス。 もたせると すばやさが さがるが、ふつうより つよく そだちやすい。
ポケットモンスター ダイヤモンド・パール・プラチナ「きょうせいギプス」の説明
ついでにRxも使うとそれっぽいプログラミングしてる気分になります。
こまごましたヘルパーが便利だったりする
ViewModelHelper.CreateReadOnlyDispatcherCollection()というメソッドがあるのですが、これはモデルをビューモデルに変換し、変更通知するコレクションに追加してくれるというもの。手前でやると微妙にめんどくさいのですが、これがあるおかげでかなり手軽に変換できます。あとは、よく使うディスパッチャーを取得できるプロパティを提供するプロパティがあったりと、地味にめんどくさいところを肩代わりしてくれて気が利いてます。
めんどくさいスレッド周りを隠ぺいしてくれる
非同期処理といえばUIはUIスレッドからしかいじれないという鉄の掟を守らないといけないのがすごくめんどくさいしハマりどころです。一応お作法があるのですが、守るのはめんどくさかったりします。ですが、変更通知や値の更新は、ビューモデルの範囲でいえばLivetが隠ぺいしてくれますし、そこから先はMVVMのしきたりを守っていればちゃんとフレームワークレベルで対応してくれます。
LivetのViewModelではプロパティ変更通知(RaisePropertyChanged)やDispatcherCollectionを使ったコレクション変更通知は自動的にUIDispatcher上での通知に変換されます。変更通知に際してUIDispatcherを操作する必要はありません。
こういった気遣いのおかげで、それほどハマることなく非同期処理を書いていくことができます。
めんどくさいめんどくさい言い過ぎでは
めんどくさがりはプログラマーの適性の一つです