いまさら学ぶ
MVVMパターン
2017/01/27 Fukuoka.NET
@tsubakimoto_s
自己紹介
松村 優大 (Yuta Matsumura)
MLBお兄さん (通称)
C# / PHP / Frontend / Azure / AWS
Microsoft MVP
(Visual Studio and Development Technologies)
2
所属 コミュニティ
本編
3
2016/12/10
4
5
xamarin/dev-days-labs
chomado/xamarin-dev-doc
6
MVVM
7
Model-View-ViewModel
8
これから
デスクトップアプリ
を作る人
9
WPF
10
だよね?
WinForm
11
お、おう…
いつまでWinFormで
消耗してるの?
12
Silverlight
13
あっはい
いつまでSilverlightで
消耗してるの?
14
MVVM
•Model-View-ViewModel
•WPFやSilverlightで使われている概念
•Xamarin
•Javascript
• AngularJS
• Knockout.js
• Vue.js
15
• データ(≒テーブル)の管理
• ビジネスロジック
M
• ユーザインターフェースV
• ModelからViewへ出力データを渡す
• ViewからModelへ入力データ渡す
VM
16
MVVMを支える技術
17
http://cases.azoft.com/mvvm-android-data-binding/
MVVMを支える技術
データバインディング
18
MVVMを支える技術
データバインディング
INotifyPropertyChanged
ICommand
ObservableCollection<T>
19
INotifyPropertyChanged
•プロパティ値が変更されたことをク
ライアントに通知する。
https://msdn.microsoft.com/ja-
jp/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx
•Viewに表示するプロパティをもつ
ModelやViewModelに実装する。
20
ICommandインターフェース
•バインド可能なコマンドを定義する。
https://msdn.microsoft.com/ja-
jp/library/system.windows.input.icommand(v=vs.110).aspx
•コードビハインド(*.xaml.cs)での
コマンドは定義しない。
21
ObservableCollection<T>クラス
•項目が追加または削除されたとき、
あるいはリスト全体が更新されたと
きに通知を行う動的なデータ コレク
ションを表す。
https://msdn.microsoft.com/ja-jp/library/ms668604(v=vs.110).aspx
•List<T>やIEnumerable<T>では
項目変更が通知されないため注意。
22
バインディング方向
•System.Windows.Data.BindingMode
•OneWay
• ソースの変更を検知・反映
•TwoWay
• ソースの変更を検知・反映
• バインド先の変更を検知・反映
23
デモ
https://msdn.microsoft.com/ja-jp/library/hh563947(v=vs.110).aspx
24
Thank you!!

いまさら学ぶMVVMパターン