25
Windows ススス ススス ススススススス スススススススススススス 2012/09/22 スス @okazuki

Windows ストア アプリの上手な作り方

  • Upload
    -

  • View
    3.450

  • Download
    3

Embed Size (px)

DESCRIPTION

第一回 Windows デベロッパーカンファレンスin東京で発表したときのスライドです

Citation preview

Page 1: Windows ストア アプリの上手な作り方

Windows ストア アプリの上手な作り方

テンプレート活用について2012/09/22大田 一希 @okazuki

Page 2: Windows ストア アプリの上手な作り方

自己紹介

大田 一希Microsoft MVP for Client App Dev 2011/07 ~Twitter: @okazuki

Blogかずきの Blog@Hatenahttp://d.hatena.ne.jp/okazuki/

Love犬

Page 3: Windows ストア アプリの上手な作り方

本日の環境について

Page 4: Windows ストア アプリの上手な作り方

今日の目的 目指すところ

Page 5: Windows ストア アプリの上手な作り方

目指すところ

Windows ストア アプリを作れる気になる

Visual Studio 2012

Blend for VS テンプレート

Page 6: Windows ストア アプリの上手な作り方

アジェンダ

Windows ストア アプリ プロジェクトテンプレート アイテムテンプレート

アイテムテンプレート 色々な見た目への対応

まとめ

Page 7: Windows ストア アプリの上手な作り方

Windows ストア アプリ

Page 8: Windows ストア アプリの上手な作り方

プロジェクトテンプレート

新しいアプリケーション (XAML)

グリッド アプリケーション (XAML)

分割アプリケーション (XAML)

Page 9: Windows ストア アプリの上手な作り方

プロジェクトテンプレート

新しいアプリケーション (XAML)

グリッド アプリケーション (XAML)

分割アプリケーション (XAML)

Page 10: Windows ストア アプリの上手な作り方

グリッド アプリケーション (XAML)基本的な 3 段の階層構造のデータを表示するアプリケーションのテンプレート

重要なエッセンスが凝縮されている

Page 11: Windows ストア アプリの上手な作り方

DEMOグリッドアプリケーション

Page 12: Windows ストア アプリの上手な作り方

プロジェクトの中身

Common フォルダが宝の山 BindableBase クラス BooleanNegationConverter クラス BooleanToVisibilityConverter クラス LayoutAwarePage クラス RichTextColumns クラス StandardStyles.xaml SuspensionManager クラス

Page 13: Windows ストア アプリの上手な作り方

プロジェクトの中身

今日紹介したいもの BindableBase クラス BooleanNegationConverter クラス BooleanToVisibilityConverter クラス LayoutAwarePage クラス RichTextColumns クラス SuspensionManager クラス StandardStyles.xaml

Page 14: Windows ストア アプリの上手な作り方

ゴミの山?

知っててスルーするのは OK

知らないのはもったいない

Page 15: Windows ストア アプリの上手な作り方

BindableBase クラス

INotifyPropertyChanged インターフェースの実装クラスclass Person : BindableBase{ private string name; public string Name { get { return this.name; } set { this.SetProperty(ref this.name, value); } }

private int age; public int Age { get { return this.age; } set { this.SetProperty(ref this.age, value); } }}

Page 16: Windows ストア アプリの上手な作り方

BindableBase クラス

従来の一般的なプロパティの書き方private string name;public string Name{ get { return this.name; } set { if (this.name == value) { return; }

this.name = value; this.OnPropertyChanged("Name"); }}

Page 17: Windows ストア アプリの上手な作り方

LayoutAwarePage クラス

DefaultViewModel プロパティ XAML で DataContext へバインドされている IObservableMap<string, object> 型 {Binding Path= キー名 } でバインド可能 ここにデータを入れて XAML でバインドする

中断処理への対応 LoadState(object navigationParameter, Dictionary<string, object>

pageState) SaveState(Dictionary<string, object> pageState)

Page 18: Windows ストア アプリの上手な作り方

LayoutAwarePage クラス

SuspensionManager との連携 画面遷移履歴も保持

スナップ・ポートレイト用の Visual State の定義 Blend や Visual Studio もこれを前提にしている

Page 19: Windows ストア アプリの上手な作り方

アイテムテンプレート 色々な見た目への対応

Page 20: Windows ストア アプリの上手な作り方

アイテムテンプレート

空白のページ

基本ページ

分割ページ

項目ページ

アイテム詳細ページ

グループ化された項目ページ

グループ詳細ページ

Page 21: Windows ストア アプリの上手な作り方

アイテムテンプレート

空白のページ

基本ページ

分割ページ

項目ページ

アイテム詳細ページ

グループ化された項目ページ

グループ詳細ページ

Page 22: Windows ストア アプリの上手な作り方

アイテムテンプレート

スナップ対応

ポートレイト対応

ランドスケープ対応

Page 23: Windows ストア アプリの上手な作り方

アイテムテンプレートの基本構造

LayoutAwarePage

コードビハインドXAML

GridView

DefaultVeiwModelData

ContextOther

Control

CollectionViewSourc

eイベントハンドラ

UI ロジック

アプリケーションのロジック

データ構造

通信

SuspensionManager (中断への対応)

ListView

Page 24: Windows ストア アプリの上手な作り方

DEMO

スナップとかへの対応

Page 25: Windows ストア アプリの上手な作り方

まとめ

用意されてるものを把握して使い倒そう BindableBase LayoutAwarePage 各種テンプレート

アプリケーションの構成はテンプレートから大きく変えない 楽が出来る。早く仕上がる。

(本気で作りこむなら自作プロジェクトテンプレートやアイテムテンプレートをそろえるという前準備が必要)

Blend for VS で自分の色を出す