33
Universal Windows Platform appの新しいバインディング 2015/12/19 めとべや東京 #10 大田 一希

めとべや東京10 Universal Windows Platform appの新しいバインディング

  • Upload
    -

  • View
    3.034

  • Download
    2

Embed Size (px)

Citation preview

Page 1: めとべや東京10 Universal Windows Platform appの新しいバインディング

Universal Windows Platform appの新しいバインディング

2015/12/19 めとべや東京 #10

大田 一希

Page 2: めとべや東京10 Universal Windows Platform appの新しいバインディング

自己紹介

• 名前/SNS• 大田 一希(かずき)

• Twitter: @okazuki

• Blog• かずきのBlog@hatena

http://blog.okazuki.jp/

• その他• Microsoft MVP for Windows Development

• R初心者

Page 3: めとべや東京10 Universal Windows Platform appの新しいバインディング

お約束事項

• 記載の内容は個人の見解であり、所属する企業を代表するものではありません。

Page 4: めとべや東京10 Universal Windows Platform appの新しいバインディング

このセッションのゴール

• 新しいバインディングの使い方を知ってもらう

Page 5: めとべや東京10 Universal Windows Platform appの新しいバインディング

最初に

• 新しいバインディングは結構バグいので要注意

• でもパフォーマンスはいいよ!

Page 6: めとべや東京10 Universal Windows Platform appの新しいバインディング

従来のデータバインディング

Page 7: めとべや東京10 Universal Windows Platform appの新しいバインディング

従来のデータバインディング

• {Binding …}のことです

Page 8: めとべや東京10 Universal Windows Platform appの新しいバインディング

従来のデータバインディング

依存関係プロパティ(コントロールのプロパティ)

プロパティ

OneTime/OneWay

TwoWay

OneWayToSource

Page 9: めとべや東京10 Universal Windows Platform appの新しいバインディング

従来のデータバインディング

• 実行時に評価される

• 手書きの値の同期よりは遅い• けれど凄く生産性が高い

Page 10: めとべや東京10 Universal Windows Platform appの新しいバインディング

UWPの新しいバインディング

Page 11: めとべや東京10 Universal Windows Platform appの新しいバインディング

UWPの新しいバインディング

• {x:Bind …}と書きます

• コンパイル時にバインディング• 超早い

Page 12: めとべや東京10 Universal Windows Platform appの新しいバインディング

UWPの新しいバインディング

• Modeは以下の通り• OneTime :初回一度きり(デフォルト)

• OneWay :ソースからターゲットへの同期

• TwoWay :ソースとターゲットの双方向

Page 13: めとべや東京10 Universal Windows Platform appの新しいバインディング

UWPの新しいバインディング

• バインディングのコンテキストはDataContextではない• Page/UserControlがコンテキストとなる

Page 14: めとべや東京10 Universal Windows Platform appの新しいバインディング

Demo(s)簡単なバインディング

Page 15: めとべや東京10 Universal Windows Platform appの新しいバインディング

コレクションのバインディング

Page 16: めとべや東京10 Universal Windows Platform appの新しいバインディング

コレクションのバインディング

• 従来通りINotifyCollectionChangedを実装したコレクションをItemsSourceにバインド

Page 17: めとべや東京10 Universal Windows Platform appの新しいバインディング

コレクションのバインディング

• DataTtemplateでの型指定• x:DataTypeでDataTemplateのDataContextの型を指定する

Page 18: めとべや東京10 Universal Windows Platform appの新しいバインディング

Demo(s)

Page 19: めとべや東京10 Universal Windows Platform appの新しいバインディング

イベントのバインディング

Page 20: めとべや東京10 Universal Windows Platform appの新しいバインディング

イベントのバインディング

• イベントもバインドできる• {x:Bind イベントハンドラ名}

• イベントハンドラの型• void Hoge()

• void Hoge(object sender, object args)

• void Hoge(object sender, ****EventArgs args)

Page 21: めとべや東京10 Universal Windows Platform appの新しいバインディング

Demo(s)

Page 22: めとべや東京10 Universal Windows Platform appの新しいバインディング

Converter & Tips

Page 23: めとべや東京10 Universal Windows Platform appの新しいバインディング

Converter & Tips

• 型変換や値の加工にはConverterを使います• 従来通りIValueConverterを実装

Page 24: めとべや東京10 Universal Windows Platform appの新しいバインディング

Converter & Tips

• 型変換が可能だけど違う型なプロパティ同士のバインディング

• キャストすれば確実に代入が可能なバインディング• 何もしないConverterが間に必要

Page 25: めとべや東京10 Universal Windows Platform appの新しいバインディング

Demo(s)

Page 26: めとべや東京10 Universal Windows Platform appの新しいバインディング

Converter & Tips

• PageにBindingsというプロパティが生成される• Update()を呼ぶとターゲットの値を強制上書き

• OneTimeも更新されるので最強

Page 27: めとべや東京10 Universal Windows Platform appの新しいバインディング

Converter & Tips

• ResourceDictionaryで使う方法• x:Class属性をつける

• コードビハインドを準備する

Page 28: めとべや東京10 Universal Windows Platform appの新しいバインディング

Demo(s)

Page 29: めとべや東京10 Universal Windows Platform appの新しいバインディング

注意点

• Styleで使えない• 普通のBindingを使いましょう

• 実行時に動的に生成できない• 普通のBindingを使いましょう

• 型変換が走る処理にnullが渡ると死ぬ• 例えばImageのSourceにstringをBindingしてるとき

• 普通のBindingを使うかnullの時に適切な値を返すようにしておく

Page 30: めとべや東京10 Universal Windows Platform appの新しいバインディング

まとめ

Page 31: めとべや東京10 Universal Windows Platform appの新しいバインディング

まとめ

• x:Bindは早い

• x:Bindは融通がきかない• 型変換の融通がきかない

• x:Bindで大体のことは出来る• 通常のバインディング

• OneWay/TwoWay/OneTime

• Converterも使える

• いざとなったらBindingsプロパティのUpdateで更新可能

Page 32: めとべや東京10 Universal Windows Platform appの新しいバインディング

まとめ

• x:Bindでハイパフォーマンスなデータバインディングを!

Page 33: めとべや東京10 Universal Windows Platform appの新しいバインディング

参考情報

•データバインディングの詳細https://msdn.microsoft.com/ja-jp/library/windows/apps/mt210946.aspx