読者です 読者をやめる 読者になる 読者になる

XORveR.com の日記

XORveR.com の公式ブログです。

システム状態を参照するICommandって有りや無しや

DotNet UnitTest wpf 雑文

まえがき

システムの状態によって振る舞いを変える画面要素があったとします。
ぶっちゃけるなら、クリップボードにイメージが入っている場合にのみ有効になるメニューアイテムなんですが。
こいつを実装するのにちょっと悩んでいたりします。

理由

なぜかと言えば、ViewModelは単体テスト対象。という主義。
その単体テストでクリップボードを使うというのは避けたいからです。
テスト実行中に手動でクリップボードを使ってしまうと誤作動しますから。

方法案1 - ガリゴリとViewにコードを書く。

理由にあるのと同様の理由でViewに、クリップボードからイメージを取得してViewModelに渡す部分は書く必要があります。
よって、毒を食うなら皿までの精神でViewに全部書いちゃえ。

方法案2 - ViewModelにICommandで実装。

その部分はテストしなけりゃいーじゃん。
どーせViewはOpenCoverのカバー範囲外なんだから、パーセンテージには影響しないよ!

方法案2改 - できるか分かんないけどViewModelに添付プロパティとしてICommand付けちゃえ。

これならxamlでCommandをバインドできるよ、やったね!
・・・なんでそんなシチ面倒くさいことせにゃならんの。馬鹿なの死ぬの?
いや、xamlの記法が統一できるというメリットはデカイかも。うーん

結論

やっぱ簡潔さから見て方法1かなーと。