40
わんくま同盟 東京勉強会 #66

WPF/Silverlight視点で視るMetroスタイルのXAML

Embed Size (px)

DESCRIPTION

わんくま同盟 東京勉強会 #66

Citation preview

Page 1: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

Page 2: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66 2

Page 3: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66 3

Metro style Apps

XAML + C# / VB

Desktop Apps

WPF

Windows Kernel Services

Windows Runtime APIs

Syst

em

Serv

ices

Kern

el

Windows API XAML Storage Network

UI Security Device

.NET Framework

XAML Storage Network

UI Security Data

Reflection

Linq

Collections

Reflection

Linq

Collections

Language

C#、Visual Basic

Language

C#、Visual Basic

.NETCore

Pro

gra

min

g

Page 4: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

.NET Framework

Client Profile

Extended

.NET for Metro style apps(.NETCore)

共通言語ランタイム(CLR)は共通

4

Page 5: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

Windows Runtime

Windows.UI.Xaml.Controls名前空間

.NET Framework

System.Windows.Controls名前空間

5

Page 6: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

Windows.UI.X

aml.Controls

名前空間

System.Windows.Controls名前空間

Windows

Runtime

Developer

Preview

WPF 4.5

Developer

Preview

Silverlight 5

RC

Windows

Phone OS 7.1

クラス数 77 165 117 60

6

※他の名前空間にあるが、クラス名が同じもの、もしくは同じ役割のクラスも含めた数字

Page 7: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

WinRTにしかないクラスは20個

感覚的に近いのはWPFよりもSilverlight

たとえばDynamicResourceや LogicalTreeHelperがない

WinRTのControls名前空間 = Windows PhoneのSilverlight + マウスサポート + 新コントロール

今までWPFにしかなかったものも一部サポート

たとえばDataTemplateSelectorやGroupStyle

7

Page 8: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66 8

Page 9: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

WPF/SilverlightのXAMLを 理解している人は、

その差分を把握するだけで MetroスタイルのXAML (あくまでXAMLだけ)を

習得できる?

9

Page 10: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

新コントロール

組み込みのアニメーション

タッチ操作

その他の差異と注意点

10

Page 11: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66 11

Page 12: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

CarouselPanel

CaptureElement

FlipView

GridView

JumpViewer

ProgressRing

ToggleSwitch

VariableSizedWrapGrid

WrapGrid

12

Page 13: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

ComboBoxの既定のItemsPanelTemplateで使用されているパネル

ドラムロール式のスクロールを実現

13

Page 14: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

通常、カメラのキャプチャはCameraCaptureUI(Windows.Media.Capture名前空間)

を使用する

ただし、これだと既定のキャプチャ画面となってしまい、カスタマイズできない

14

Page 15: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

自分の作っている画面にキャプチャ機能を 組み込みたいときにCaptureElementを使用

Package.appxmanifestのCapabilitiesでWebcamを有効にするのを忘れずに

15

Page 16: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

同時に1つ項目だけを表示するItemsControl

おそらくフォトビューワーなどの 使用を想定

16

Page 17: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

ListViewBaseから派生する兄弟コントロール

ItemsPanelTemplateが、 VirtualizingStackPanelになっているか、 WrapGridになっているかが大きな違い

17

Page 18: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

ItemsPanelTemplateでのみ使用可能なWrapPanel

VirtualizingPanelとなっておりUIの仮想化が有効

18

WrapGrid WrapPanel

HorizontalChildrenAlignment ✓ -

ItemHeight ✓ ✓

ItemWidth ✓ ✓

MaximumRowsOrColumns ✓ -

Orientation ✓ ✓

VerticalChildrenAlignment ✓ -

Page 19: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

JumpView(グループ一覧)とContentView(項目)を切り替えて表示

19

Page 20: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

semantic zoomを実現するための コントロール

ピンチイン操作でJumpViewを表示

両Viewには、IJumpViewerInfoインター フェイスを実装したUI要素が必要

ListViewかGridView

データソースは IGroupInfoインターフェイスの実装が必要

20

Page 21: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

使いどころは ProgressBarのIsIndeterminate = True とほぼ同じ

表示の有効/無効を切り替える IsActiveプロパティのみの、 シンプルなコントロール

21

Page 22: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

Silverlight for Windows Phone ToolkitのToggleSwitch(Microsoft.Phone.Controls) と似ているが、全く同じではない

IsOnプロパティ(Windows.UI.Xaml.Controls )

IsCheckedプロパティ(Microsoft.Phone.Controls)

オン時、オフ時の文字列を プロパティで変更可能 OnContentプロパティ

OffContentプロパティ

22

Page 23: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

WinRT

Silverlight for Windows Phone Toolkit

23

Page 24: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

子要素の添付プロパティとして ColumnSpan、RowSpanを設定できる WrapGrid

24

Page 25: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66 25

Page 26: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

Metroスタイルアプリのルック&フィールに対して一貫性のあるトランジション アニメーションが簡単に適用できる

テーマトランジション

テーマアニメーション

26

Page 27: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

適用先が限定されており、実行のタイミングは決められている

AddDeleteThemeTransition

ContentThemeTransition

EntranceThemeTransition

ReorderThemeTransition

RepositionThemeTransition

27

Page 28: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

UIElement.Transitionsプロパティ

Panel.ChildrenTransitionsプロパティ

ItemsControl.ItemContainerTransitions プロパティ

ContentControl.ContentTransitionsプロパティ

28

Page 29: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66 29

従来のアニメーションの延長にあり、 任意のタイミングで実行できる

アニメーション動作は決められており、 最小限の設定で使用可能 CrossSlideBackThemeAnimation CrossSlideHintThemeAnimation DragItemThemeAnimation DragOverThemeAnimation DropTargetItemThemeAnimation FadeInThemeAnimation FadeOutThemeAnimation PopInThemeAnimation

PopOutThemeAnimation RepositionThemeAnimation SelectDownThemeAnimation SelectUpThemeAnimation SplitCloseThemeAnimation SplitOpenThemeAnimation TapDownThemeAnimation

TapUpThemeAnimation

Page 30: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66 30

Page 31: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

イベント WinRT DP WPF 4.5 DP

Silverlight 5

RC Windows

Phone OS 7.1

ManipulationStarting ○ ○ × ×

ManipulationStarted ○ ○ × ○

ManipulationDelta ○ ○ × ○

ManipulationInertiaStarted ○ ○ × ×

ManipulationBoundaryFeedback × ○ × ×

ManipulationCompleted ○ ○ × ○

31

基本的には同じだが細かい部分で違いアリ

WPFと違い、何もしなくても慣性がつく

Page 33: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

WPFのScrollViewerにあった

PanningModeプロパティ

VerticalScrollModeプロパティとHorizontalScrollModeプロパティで 設定するようになり、分かりやすくなった

PanningDecelerationプロパティ、PanningRatioプロパティ

スクロールの移動量や慣性の減速度をデフォルトから変えるのは好ましくないから不要?

33

Page 34: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

VerticalSnapPointsTypeプロパティを“Mandatory”に設定することで、UI要素単位でスクロールがスナップする

スナップする位置はVerticalSnapPointsAlignmentプロパティで設定可能

デフォルトで ピンチ操作によるズームにも対応

34

Page 35: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66 35

Page 36: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

Silverlightに存在する以下のメンバーは サポートされていない

BindsDirectlyToSourceプロパティ

FallbackValueプロパティ

Validation関連のプロパティ

StringFormatプロパティ

TargetNullValueプロパティ

UpdateSourceTriggerプロパティ

36

Page 37: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

x:Boolean

x:String

x:Double

x:Int32

37

Page 38: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

Developer Previewでは不具合によって 普通に動かない部分がある

特にデータバインディング系

SDKのサンプルでは 回避策を使って対応されている

その方法を参考にするか、 Beta版を待つのでも良いと思う

38

Page 39: WPF/Silverlight視点で視るMetroスタイルのXAML

わんくま同盟 東京勉強会 #56 わんくま同盟 東京勉強会 #66

• WPF

• Silverlight

• Silverlight for Windows Phone

• Silverlight for Windows Embedded

のいずれかのXAMLを経験している人は、

• Metroスタイルアプリケーション

のXAMLも恐れるに足らず

39

Page 40: WPF/Silverlight視点で視るMetroスタイルのXAML

40