2009 1 XAML NET 3 0 XAML UI

  • Slides: 51
Download presentation

2009年 1月現在における XAML の状況 . NET 3. 0 においては成功を収める XAML ボキャブラリ : UI :

2009年 1月現在における XAML の状況 . NET 3. 0 においては成功を収める XAML ボキャブラリ : UI : Silverlight / WPF におけるデザイナー&デベロッパー協業 ワークフロー : 宣言的なワークフローのコーディネーション 電子書類 : XML Paper Specification (XPS) ランタイム : . NET 3. 0 & 3. 5; Silverlight 1. 0 & 2 ツール : Visual Studio 2008 ( WPF, WF デザイナー, XAML エディタ ), Expression Blend 2 SP 1 XAML 仕様 が公開 [MS-XAML], [MS-WPFXV], [MS-SLXV], and XPS ( → ECMAで標準 化へ) ファイルコンバーター : Blender, Fireworks, Light. Wave, Flash, SVG, Visio, Maya, 3 ds, Illustrator, WMF, EMF, PSD, DWG, DXF, OBJ, 等々

WPF / Silverlight における XAML

WPF / Silverlight における XAML

XAML : 宣言的プログラミング言語 マークアップ言語 シンプルな宣言的ステートメントによるアプリケーション構築 WPF / Silverlight に限らず CLR objectに対して階層的に利用可能 コードとコンテンツの分離 デザイナーとデベロッパーとの共同作業を効率化する ツール

XAML : 宣言的プログラミング言語 マークアップ言語 シンプルな宣言的ステートメントによるアプリケーション構築 WPF / Silverlight に限らず CLR objectに対して階層的に利用可能 コードとコンテンツの分離 デザイナーとデベロッパーとの共同作業を効率化する ツール (Visual Studio 2008, Expression Blend 2, (XAML Pad) 等)を使って簡単に作成・利用ができる <Button Width="100">OK <Button. Background> Light. Blue </Button. Background> </Button> Button b 1 = new Button(); b 1. Content = "OK"; b 1. Background = new Solid. Color. Brush (Colors. Light. Blue); b 1. Width = 100; Dim b 1 As New Button b 1. Content = "OK" b 1. Background = New _ Solid. Color. Brush _ (Colors. Light. Blue) b 1. Width = 100

Controls, Templates, Styles & Resources, Layouts, Animation, Triggers, Timelines Templated Button XAMLで生成 <Stack. Panel>

Controls, Templates, Styles & Resources, Layouts, Animation, Triggers, Timelines Templated Button XAMLで生成 <Stack. Panel> <Stack. Panel. Triggers> <Event. Trigger Routed. Event=“Button. Click"> <Event. Trigger. Actions> <Begin. Storyboard> <Color. Animation To="Yellow" Duration="0: 0: 0. 5“ Storyboard. Target. Name="The. Brush" Storyboard. Target. Property="Color" /> UI サービスとして下記の機能 を持つ <Double. Animation To="45" Duration="0: 0: 2" Storyboard. Target. Name="Lower. Ellipse. Transform" Storyboard. Target. Property="Angle" /> • Templates • Layout • Controls Library • Styles and Resources • Annotation . . . </Stack. Panel. Triggers> … remainder of contents of Stack. Panel, including x: Name'd The. Brush and Lower. Ellipse. Transform … </Stack. Panel>

Silverlight & WPF Control Model 同じ部分: User. Control, Custom. Control <Style>, <Control. Template> Silverlight

Silverlight & WPF Control Model 同じ部分: User. Control, Custom. Control <Style>, <Control. Template> Silverlight 2 だけの部分 - <Style> Write-Once Style Property Styles Support に依拠していない アプリケーションレベルでのテーマのサポートは していない XAMLのルート WPF - <Window>/</Window> or <Page>/</Page> Silverlight - <User. Control></User. Control> WPFにおけるVisual. State. Manager? SilverlightにおけるTrigger?

Visual. State のビヘイビア VSM スキンを、既存の WPF コント ロールに追加 WPFToolkit に含まれるもの: Button. Base. Behavior {

Visual. State のビヘイビア VSM スキンを、既存の WPF コント ロールに追加 WPFToolkit に含まれるもの: Button. Base. Behavior { Button, Toggle. Button} List. Box. Item. Behavior Progress. Bar. Behavior Text. Box. Behavior Toggle. Button. Behavior {Check. Box, Radio. Button}

Silverlight におけるTrigger XAML を利用して、プロパティの変化 やイベントに反応できる Silverlight の将来のリリースにおいて、 登場予定 Trigger と連携する Visual. State. Manager <Trigger

Silverlight におけるTrigger XAML を利用して、プロパティの変化 やイベントに反応できる Silverlight の将来のリリースにおいて、 登場予定 Trigger と連携する Visual. State. Manager <Trigger …> <Go. To. State “Mouse. Over”/> </Trigger>

その他最近の変更点 Silverlight 2 Xmlns 現在は完全に同一 Dependency. Property. Register(…, …, …, callback); コントロールテンプレートの改善 Databinding のバリデーション

その他最近の変更点 Silverlight 2 Xmlns 現在は完全に同一 Dependency. Property. Register(…, …, …, callback); コントロールテンプレートの改善 Databinding のバリデーション Routed. Event. Args. Handled その他多くの API シグネーチャの決定と将来の対応 予定機能 WPF 3. 5 sp 1 Storyboard. Begin() の追加 Storyboard. Set. Target(storyboard, element) Shared clocks, animation hold

{x: Reference name} より良い名前参照 XAML 2006 <Label Target="{Binding Element. Name=first. Name}"> First Name</Label> <Text.

{x: Reference name} より良い名前参照 XAML 2006 <Label Target="{Binding Element. Name=first. Name}"> First Name</Label> <Text. Box Name="first. Name. Box" /> XAML 2009 <Label Target="{x: Reference first. Name. Box}">…</> <Text. Box Name="first. Name. Box" /> またはもっと良い方法としては: <Label Target="first. Name. Box">First Name</Label> <Text. Box Name="first. Name. Box" /> <Write. Line Text=‘[“Hello ” + first. Name]’ /> → Windows Workflowで使用

ビルトインタイプ オーサリングをシンプルに XAML 2006 <s: String xmlns: s="clrnamespace: System; assembly=mscorlib">Foo </s: String> XAML 2009

ビルトインタイプ オーサリングをシンプルに XAML 2006 <s: String xmlns: s="clrnamespace: System; assembly=mscorlib">Foo </s: String> XAML 2009 <x: String> <x: Boolean> <x: Int 64> <x: Time. Span> <x: Char> <x: Byte> <x: Decimal> <x: Array> <x: Single> <x: Int 16> <x: Object> <x: List> <x: Double> <x: Int 32> <x: Uri> <x: Dictionary>

x: Type. Arguments Generics の完全サポート XAML 2006 class Person. Collection : Observable. Collection<Person> {}

x: Type. Arguments Generics の完全サポート XAML 2006 class Person. Collection : Observable. Collection<Person> {} <l: Person. Collection> <Person Name=“Suzuki" /> </l: Person. Collection> XAML 2009 <Observable. Collection x: Type. Arguments="Person"> <Person Name=“Suzuki" /> <Person Name=“Sato" /> <Person Name=“Takahashi" /> </Observable. Collection>

<x: Key>…</x: Key> 任意のディクショナリーキータイプ XAML 2006 String または Markup. Extension key のみ XAML 2009

<x: Key>…</x: Key> 任意のディクショナリーキータイプ XAML 2006 String または Markup. Extension key のみ XAML 2009 <Switch x: Type. Arguments="x: Int 64" Expression="[rating]"> <Sequence x: Key="10">…</Sequence> <x: Key>9</x: Key> … </Sequence> </Switch> → Workflowで使用

コンパイルなしでのイベントサポー ト メソッド名を超えて XAML 2006 <Button Click="button_Click" /> + markup compilation XAML 2009 <Button

コンパイルなしでのイベントサポー ト メソッド名を超えて XAML 2006 <Button Click="button_Click" /> + markup compilation XAML 2009 <Button Click="button_Click" /> + markup compilation または: <Button Click="{Delegate. Creating. ME Foo}" /> あるいはさらに:(Worklowでも使える) <Button> <Button. Click> <Delegate. Creating. ME Name="Foo" /> <Button. Click> </Button>

より良い宣言的なタイプのオーサリング XAML 2006 <Window x: Class="Wpf. Application 1. Window 1" … /> XAML 2009

より良い宣言的なタイプのオーサリング XAML 2006 <Window x: Class="Wpf. Application 1. Window 1" … /> XAML 2009 <Activity x: Class="Activity. Library 1. Prompt" …> <x: Schema. Type. Members> <x: Schema. Property Name="Text" Type="In. Argument(x: String)" /> <x: Schema. Property Name="Result" Type="Out. Argument(x: String)" /> </x: Schema. Type. Members> <Sequence>…</Sequence> </Activity>

<x: Arguments>…</x: Arguments> 非デフォルトコンストラクタの利用 XAML 2006 <Date. Time>00: 00. 0000100</Date. Time> XAML 2009 <Date.

<x: Arguments>…</x: Arguments> 非デフォルトコンストラクタの利用 XAML 2006 <Date. Time>00: 00. 0000100</Date. Time> XAML 2009 <Date. Time> <x: Arguments> <x: Int 64>100</x: Int 64> <!-- Ticks --> </x: Arguments> </Date. Time>

x: Factory. Method 静的ファクトリーメソッドの利用 XAML 2006 Guid guid = Guid. New. Guid(); XAML 2009

x: Factory. Method 静的ファクトリーメソッドの利用 XAML 2006 Guid guid = Guid. New. Guid(); XAML 2009 <Guid x: Factory. Method="Guid. New. Guid" /> x: Arguments で作成・編集する

XAML データモデル <Check. Box> hello </Check. Box> <Check. Box. Content> hello </Check. Box. Content>

XAML データモデル <Check. Box> hello </Check. Box> <Check. Box. Content> hello </Check. Box. Content> </Check. Box> <Check. Box Content="hello"/>

System. Xaml. dll in. NET 4. 0

System. Xaml. dll in. NET 4. 0

3. 0 と 4. 0 における XAML と Objects との関係 object Xaml. Reader. Load(Xml.

3. 0 と 4. 0 における XAML と Objects との関係 object Xaml. Reader. Load(Xml. Reader) XML Nodes to XAML Nodes Create Object Graph Resolve Type Information Object Graph object Xaml. Reader. Load(Xml. Reader) XML Nodes XML Node to XAML Node Type Resolution XAML Node to Objects Object Graph

3. 0 と 4. 0 における XAML と Objects との関係 object Xaml. Reader. Load(Xml.

3. 0 と 4. 0 における XAML と Objects との関係 object Xaml. Reader. Load(Xml. Reader) XML Nodes to XAML Nodes Create Object Graph Resolve Type Information Object Graph object Xaml. Reader. Load(Xml. Reader) XML Nodes XML Node to Xaml. Xml. Reader XAML Node Type Resolution XAML Node Object to. Writer Objects Object Graph

Xaml. Reader API シグネーチャ public abstract class Xaml. Reader : IDisposable { abstract bool

Xaml. Reader API シグネーチャ public abstract class Xaml. Reader : IDisposable { abstract bool Read(); abstract Xaml. Node. Type { get; } abstract Namespace. Declaration Namespace { get; } Xaml. Type { get; } Xaml. Member { get; } object Value { get; } virtual void Skip(); virtual Xaml. Reader Read. Subtree(); abstract Xaml. Schema. Context { get; }. . . }

Xaml. Writer API シグネーチャ public abstract class Xaml. Writer : IDisposable { void Write.

Xaml. Writer API シグネーチャ public abstract class Xaml. Writer : IDisposable { void Write. Node(Xaml. Reader reader); abstract void Write. Namespace( Namespace. Declaration namespace. Declaration); abstract void Write. Start. Object(Xaml. Type type); abstract void Write. Get. Object(); abstract void Write. End. Object(); abstract void Write. Start. Member(Xaml. Member member); abstract void Write. End. Member(); abstract void Write. Value(object value); . . . }

XAML ドキュメントとはそもそも 何か? Compact Binary –. baml Start. Object ST=Ca nvas Start. Member SM=Chi

XAML ドキュメントとはそもそも 何か? Compact Binary –. baml Start. Object ST=Ca nvas Start. Member SM=Chi ldren Start. Object ST=Bu tton Start. Member SM=Backgr ound Te. ST Start. Member SM=Co ntent Textual -. xaml Start. Object ST=Bu tton <Canvas> <Button Background="Green"> Ok </Button> <Button Content="Cancel"> <Button. Background> Red </Button. Background> </Button> </Canvas> “Gr een ” Te. ST “ O k ” “ R e d ” Start. Member SM=Backgr ound Te. ST Start. Member SM=Co ntent Te. ST “Can cel” Canvas Button Object Graph ON ST=Ca nvas PN SM=Chi ldren ON ST=But ton PN SM=Backgr ound PN SM=Co ntent TN “Gre en” TN “ O k ” PN SM=Backgr ound TN Button “R ed ” DOM Tree PN SM=Co ntent TN “Canc el”

Baml. Reader X B Baml. Writer Reader / Writer シナリオ Xaml. Xml. Reader Object.

Baml. Reader X B Baml. Writer Reader / Writer シナリオ Xaml. Xml. Reader Object. Writer Xaml. Xml. Writer Object. Reader Optimizing Xaml to Binary Form (X からBへ) Binary Form Loading @ Runtime (B から0へ) Designers – loading into a DOM & Objects(DOM と Object へのロード) D Dom. Reader Xaml Loading @ Runtime (X から Oへ) Xaml Saving (O から Xへ) Dom. Writer Primary Scenarios O

ファイルコンバージョンシナリオ X Xaml. Xml. Reader Object. Writer Xaml. Xml. Writer Object. Reader SVG Conversion

ファイルコンバージョンシナリオ X Xaml. Xml. Reader Object. Writer Xaml. Xml. Writer Object. Reader SVG Conversion を Objects (SVG to O) へ SVGReader SVG Conversion を XAML (SVG to X) へ SVGWriter File Conversion Scenarios XAML Conversion を SVG (X to SVG) へ Object Saving を SVG (O to SVG) へ SVG O

XAML Ready Flamework

XAML Ready Flamework

. NET における XAML Ready Framework. NET 3. 0 . NET 3. 5 .

. NET における XAML Ready Framework. NET 3. 0 . NET 3. 5 . NET 4. 0 WPF Rich XAML Vocabulary WF Some XAML Vocabulary Rich XAML Vocabulary WCF No XAML Vocabulary Some XAML Vocabulary Rich XAML Vocabulary

自分自身の関心を宣言する Say what you want without saying how to do it WPF WCF WF

自分自身の関心を宣言する Say what you want without saying how to do it WPF WCF WF XAML で宣言的にモデルを作成できる XAML Readyフレームワーク!

XAML Ready Frameworkで 自分だけのモデルを作ろう! YOU! YOU! WPF WCF YOU! WF YOU! YOU!

XAML Ready Frameworkで 自分だけのモデルを作ろう! YOU! YOU! WPF WCF YOU! WF YOU! YOU!

リソース System. Xaml. dll CTP (予定) http: //go. microsoft. com/fwlink/? Link. Id=132499 Rob Relyea(XAML

リソース System. Xaml. dll CTP (予定) http: //go. microsoft. com/fwlink/? Link. Id=132499 Rob Relyea(XAML Team, Principal Architect ) のBlog : XAMLified http: //blogs. windowsclient. net/rob_relyea/ Silverlight Site http: //silverlight. net Silverlight Toolkit http: //codeplex. com/Silverlight WPF Toolkit http: //www. codeplex. com/wpf 講師のBlog : the Architecture of RIA http: //builder. japan. zdnet. com/member/u 508527/blog/

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows Vista and other product names

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U. S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.