17
Xamarinハンズオン 2017/1/15 ラルフ(@r_ralph_h)

OthloEvent #9 Xamarinハンズオン

Embed Size (px)

Citation preview

Page 1: OthloEvent #9 Xamarinハンズオン

Xamarinハンズオン2017/1/15ラルフ(@r_ralph_h)

Page 2: OthloEvent #9 Xamarinハンズオン

題材

・こんなものを作ってみます

Xamarin Dev Days(世界的に⾏われたXamarinのイベント)の登壇者リストを表⽰できるアプリ

Page 3: OthloEvent #9 Xamarinハンズオン

目標

・Xamarin.Formsによるコード共有の体験・Bindingを使⽤したMVVMパターンの体験

Page 4: OthloEvent #9 Xamarinハンズオン

進め方

基本はhttps://github.com/chomado/xamarin-dev-docを使⽤しながら進めます。

難しい部分はスライドにて補⾜説明を⼊れます

Page 5: OthloEvent #9 Xamarinハンズオン
Page 6: OthloEvent #9 Xamarinハンズオン

MVVMについて

MVVM(Model-View-ViewModel)ソフトウェアアーキテクチャパターンの⼀つ

Page 7: OthloEvent #9 Xamarinハンズオン

ソフトウェアアーキテクチャパターン?

・ソフトの⽣産性や保守性を上げるための考え⽅・役割分担をすることでデータや処理の流れをわかり

やすくする

Page 8: OthloEvent #9 Xamarinハンズオン

Model

・主にデータと⼿続きを表す・データ:登壇者の名前・URL・タイトル など・⼿続き:登壇まで何時間か計算する処理 など

・Modelは⾃⾝のデータがどのような形で描画されるか知らない

Page 9: OthloEvent #9 Xamarinハンズオン

View

・ユーザーへの表⽰とユーザーからの⼊⼒を担う・XFでは、Xamlを使⽤してViewを作れる・MVVMにおいて、Viewは複雑なことはしない

・後述のViewModelの持つ情報をただ表⽰するだけ

Page 10: OthloEvent #9 Xamarinハンズオン

ViewModel

・ViewとModelの架け橋・Viewに描画する状態の保持・Viewからの⼊⼒を変換し、Modelに渡す

・BindingによってViewModelが変更された時に⾃動的にViewへ反映される

Page 11: OthloEvent #9 Xamarinハンズオン

Binding(ViewBinding)

・V-VM間を結ぶ技術・⼀⽅が変わった場合に対応する他⽅も変化する

aa

ViewModel → View

stringhoge ="aa";

hoge ="bb";

bb

aa

View→ ViewModel

stringhoge ="aa";

hoge =>"bb"

bb

Page 12: OthloEvent #9 Xamarinハンズオン
Page 13: OthloEvent #9 Xamarinハンズオン

PropertyChanged

・ViewModelの状態が変化する(プロパティによってフィールドが書き換えられる)時にOnPropertyChangedを呼ぶ

・XFのBindingでは、この時に変化したプロパティに対応するViewを変更する

Page 14: OthloEvent #9 Xamarinハンズオン

バッキングフィールド

・フィールド:データを保存する変数・プロパティ:フィールドの値を読み書きする⼿段

・フィールドへの読み書きのイベントを取得したい!・Getter/Setterを実装すればできる→カッコ悪い・プロパティで取得する

Page 15: OthloEvent #9 Xamarinハンズオン

バッキングフィールド

private int hoge; // 直接いじられると困るのでprivateに// こいつがバッキングフィールド

public int Hoge{

get { return hoge; }set{

hoge = value;// ここでイベント取れる!

}}

Page 16: OthloEvent #9 Xamarinハンズオン

バッキングフィールド

・Modelで書いた以下の書き⽅を⾃動実装プロパティと呼ぶpublic int Hoge { get; set; }

・これによりフィールドとプロパティがよしなに⽣成される

Page 17: OthloEvent #9 Xamarinハンズオン