Professional Documents
Culture Documents
WindowsPhone7で
MVVM入門&UnitTest(さわり)
Agenda
MVVM概要
Model – View – ViewModel !!
MVVM導入
WP7でMVVMをはじめる方法
UnitTest
単体テストを書こう
小ネタ
その他言い足りないこと色々
Agenda
MVVM概要
Model – View – ViewModel !!
MVVM導入
WP7でMVVMをはじめる方法
UnitTest
単体テストを書こう
小ネタ
その他言い足りないこと色々
MVVMの概要
Model-View-ViewModelパターンの略
モデル - ビュー -ビューモデル
基本はMVCパターン
MVCは知ってるよね
表示(XAML)とプログラムコードを疎結
合にする
依存の無いテスト可能なコードを書けるようになる
データバインド&コマンド&メッセージ
疎結合にするための仕組み
UnitTest View
ViewModel
Model
MVVMじゃないコード
これまでのやり方(XAML)
あるあるRIA開発
XAMLコードと直結している!!
MVVMなコード
(XAML)
<Command:EventToCommand
Command=“{Binding testCommand}”
CommandParameter=“{Binding Text, ElementName=textBlock1}“
/>
(C#コード)
public void _testCommand(string name)
{
// anything code
// テキストボックスのTextプロパティにアクセスする必要がなくなっている
}
MVVMなコード
・・・といかにも「MVVM便利ー!!」な風に書きましたが、
MVVMなコード
(XAML省略した部分を表示)
<Button Content=“Send" Name="button1>
<Interactivity:Interaction.Triggers>
<Interactivity:EventTrigger EventName="Click"
x:Name="btnSearchClickedEventTrigger">
<Command:EventToCommand Command="{Binding
testCommand}" CommandParameter="{Binding Text,
ElementName=textBlock1}"/>
</Interactivity:EventTrigger>
</Interactivity:Interaction.Triggers>
MVVMなコード
(C#コード抜粋)
this.testCommand = new RelayCommand<string>((string name) =>
{
this._testCommand(name), (param) => { return true; });
}
}
コード量は増えます。
私見ですが、
Viewが数画面で
ロジックも簡単な
アプリケーションを作成するのに
MVVMは必要無いと思います。
Agenda
MVVM概要
Model – View – ViewModel !!
MVVM導入
WP7でMVVMをはじめる方法
UnitTest
単体テストを書こう
小ネタ
その他言い足りないこと色々
Agenda
MVVM概要
Model – View – ViewModel !!
MVVM導入
WP7でMVVMをはじめる方法
UnitTest
単体テストを書こう
小ネタ
その他言い足りないこと色々
導入
http://geekswithblogs.net/lbugnion/Default.aspx
導入
・VisualStudio用のテンプレートもあるが
WP7SDKのRTMに対応していないので今は使わない
ViewModelBase
ViewModelの基本クラス
ViewModelはこのクラスを継承します。
MVVM Light概要
・GalaSoft.MvvmLight.WP7.dll
Helperクラスが色々定義されているよ
ButtonBaseExtensions
RelayCommandの基本クラス
RelayCommand
ViewからのCommandを受け取る
RelayCommand<T>
ViewからのCommandを受け取る
Viewからの命令呼び出しを処理します。
MVVM Light概要
・GalaSoft.MvvmLight.WP7.dll
Helperクラスが色々定義されているよ
各種Messageクラス
Messageクラス色々
ViewModelからの命令を処理するための
クラス
MVVM Light概要
・GalaSoft.MvvmLight.Extra.WP7.dll
Silverlight4から対応のCommandをWP7で使えるようになる
EventToCommand
XAMLからViewModelにコマンドを送信する
ViewからViewModelに命令を送ります
View
Command Message
ViewModel
デモ
MVVMっぽく楽天Book情報を取得します
捕捉
ModelViewクラスはVS2010のデフォルト
プロジェクトの中にも生成されるものがあ
りますが、CommandやMessageが利用で
きるか未検証。
SLでCommandが利用できるのは4からだっ
たと記憶。
WP7のSLは3ベース。
Agenda
MVVM概要
Model – View – ViewModel !!
MVVM導入
WP7でMVVMをはじめる方法
UnitTest
単体テストを書こう
小ネタ
その他言い足りないこと色々
Agenda
MVVM概要
Model – View – ViewModel !!
MVVM導入
WP7でMVVMをはじめる方法
UnitTest
単体テストを書こう
小ネタ
その他言い足りないこと色々
UnitTest
MVVMは
単体テスト可能なコードを生成する
と話しました。
UnitTest View
ViewModel
Model
UnitTest
それではMVVMの紹介の最後に
方法を紹介します。
UnitTest
本家サイトは情報不足状態だが、利用して
いる人が多いのである程度参考にして実装
できる。
UnitTest導入
http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/
の下部リンクからバイナリーファイルを
ダウンロード
UnitTest導入
展開すると以下ファイルがあります。
後程これを参照に追加して利用。
UnitTest導入
UnitTest用のプロジェクトを追加
UnitTest導入
テスト対象となるプロジェクトを参照に追加
テスト対象で利用しているdllも必要にあわせて追加
先ほどDLしたUnitTest用のdllを追加
UnitTest導入
UnitTest導入
MainPage.xaml.csを修正
public MainPage()
{
InitializeComponent();
Content = UnitTestSystem.CreateTestPage();
}
UnitTest導入
デモ
UnitTest導入
その他のテストケースなどの詳細は以下を参照
http://codingsolutions.blogspot.com/2010/03/wind
ows-phone-7-tdd-kata-using-mvvm-and.html
Agenda
MVVM概要
Model – View – ViewModel !!
MVVM導入
WP7でMVVMをはじめる方法
UnitTest
単体テストを書こう
小ネタ
その他言い足りないこと色々
Agenda
MVVM概要
Model – View – ViewModel !!
MVVM導入
WP7でMVVMをはじめる方法
UnitTest
単体テストを書こう
小ネタ
その他言い足りないこと色々
Windows Phone って
もはやWindow(窓)じゃな
いよね・・・
でも、それ魅力
シンプルでスタイリッシュ!!
Windows Phone 7は
マルチタスクじゃない
なので今回のデモのように
一度ブラウザを開いて戻ってく
る場合はデータを退避させる必
要がある
IsolatedStorageSettings
タイルページなどではプッシュ配
信で新着情報などを受信できる