Xamarinハンズオン
2017/1/15
ラルフ(@r_ralph_h)
題材
・こんなものを作ってみます
Xamarin Dev Days(世界的に⾏われた
Xamarinのイベント)の登壇者リスト
を表⽰できるアプリ
目標
・Xamarin.Formsによるコード共有の体験
・Bindingを使⽤したMVVMパターンの体験
進め方
基本は
https://github.com/chomado/xamarin-dev-doc
を使⽤しながら進めます。
難しい部分はスライドにて補⾜説明を⼊れます
MVVMについて
MVVM(Model-View-ViewModel)
ソフトウェアアーキテクチャパターンの⼀つ
ソフトウェアアーキテクチャパターン?
・ソフトの⽣産性や保守性を上げるための考え⽅
・役割分担をすることでデータや処理の流れをわかり
やすくする
Model
・主にデータと⼿続きを表す
・データ:登壇者の名前・URL・タイトル など
・⼿続き:登壇まで何時間か計算する処理 など
・Modelは⾃⾝のデータがどのような形で描画される
か知らない
View
・ユーザーへの表⽰とユーザーからの⼊⼒を担う
・XFでは、Xamlを使⽤してViewを作れる
・MVVMにおいて、Viewは複雑なことはしない
・後述のViewModelの持つ情報をただ表⽰するだけ
ViewModel
・ViewとModelの架け橋
・Viewに描画する状態の保持
・Viewからの⼊⼒を変換し、Modelに渡す
・BindingによってViewModelが変更された時に⾃動
的にViewへ反映される
Binding(ViewBinding)
・V-VM間を結ぶ技術
・⼀⽅が変わった場合に対応する他⽅も変化する
aa
ViewModel → View
string	hoge =	"aa";
hoge =	"bb";
bb
①
②
③
aa
View	→ ViewModel
string	hoge =	"aa";
hoge =>	"bb"
bb
①
②
③
PropertyChanged
・ViewModelの状態が変化する(プロパティによって
フィールドが書き換えられる)時に
OnPropertyChangedを呼ぶ
・XFのBindingでは、この時に変化したプロパティに
対応するViewを変更する
バッキングフィールド
・フィールド:データを保存する変数
・プロパティ:フィールドの値を読み書きする⼿段
・フィールドへの読み書きのイベントを取得したい!
・Getter/Setterを実装すればできる→カッコ悪い
・プロパティで取得する
バッキングフィールド
private int hoge; // 直接いじられると困るのでprivateに
// こいつがバッキングフィールド
public int Hoge
{
get { return hoge; }
set
{
hoge = value;
// ここでイベント取れる!
}
}
バッキングフィールド
・Modelで書いた以下の書き⽅を⾃動実装プロパティ
と呼ぶ
public int Hoge { get; set; }
・これによりフィールドとプロパティがよしなに⽣成
される
OthloEvent #9 Xamarinハンズオン

OthloEvent #9 Xamarinハンズオン