まぐらぼ

Unity/Android、Microsoft系のWPFをやってます。

RelayCommandについて

RelayCommand(DelegateCommand)の実装は自分で組込む必要あるっけ?と疑問に感じたのでメモります。

◆VisualStudioのバージョンによる差異
VS2013の場合
→ストアアプリグリッドアプリケーションを新規作成するとcommon/RelayCommand.csが自動生成されます。

VS2012の場合
WPFはセーフですが、ストアアプリはRelayCommandを自分で用意する必要があります。

◆ VS2012かつWPFの場合は、Microsoft.TeamFoundation を使う
1. パッケージのInstall
[参照設定]を右クリックして、[NuGetパッケージの管理]から-[プロジェクト名-NuGetパッケージの管理]ダイアログを開く。
[オンライン]からMicrosoft.TeamFoundation.*のインストールボタンを押下します。
using Microsoft.TeamFoundation.MVVMのためにはMicrosoft.TeamFoundation.Controlを参照する必要あります。

2.参照設定
[参照設定]-[参照の追加]-[参照MGR]ダイアログを開く。[アセンブリ]-[拡張]を選択して検索BOXよりMicrosoft.TeamFoundationと入力。Microsoft.TeamFoundationコンポーネントをインストールしておく。

これでRelayCommandが使えます。
var command = new Microsoft.TeamFoundation.MVVM.RelayCommand(ラムダ式);

◆ VS2012かつ[StoreApp/Metro/WinRTの場合]
ストアアプリProjectにMicrosoft.TeamFoundationインストールを試みるとエラーになります。VS2013で作ったRelayCommandや自作コマンドを使いましょう。

VS2012とVS2013でCommon以下のコードの差異が大きいので注意して見てください。

VS2012:
f:id:o-maguro:20140612194443j:plain
VS2013:
f:id:o-maguro:20140612194448j:plain