T3-402 鈴木章太郎 アーキテクトエバンジェリスト マイクロソフト株式会社 本セッションでは、 現在開発中の製品を取り扱っています。 このセッションは、現時点での情報を元にしています。 仕様および機能は変更される可能性があります。 XAML 2006の現状と課題 WPF / Silverlightにおける XAML XAML 2009による強化ポイント XAML データモデル System.Xaml.dll in .NET 4.0 .NET における XAML Ready Framework リソース・関連セッション他 .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 SP1 XAML 仕様 が公開 [MS-XAML], [MS-WPFXV], [MS-SLXV], and XPS ( → ECMAで標準 化へ) ファイルコンバーター : Blender, Fireworks, LightWave, Flash, SVG, Visio, Maya, 3ds, Illustrator, WMF, EMF, PSD, DWG, DXF, OBJ, 等々 まだまだやるべきことはある! 言語の進化が必要 もっと高速に! XAML/BAMLの基本的な部分に関しては、 さらなる継続的投資が必要 コンパイル, デバッグ,データの難読化, ローカライゼーション, FxCop, Visual Studioとの統合, その他 誰もが独自のパーサーを書く必要があるの か? XAMLを使い、もっと多くの領域をモデ リングしたい 言語の拡張 より高速なパーシング ! XAML ドキュメントは、より簡単に パースでき、実行でき、そして変換で きる XAML Ready Framework マークアップ言語 シンプルな宣言的ステートメントによるアプリケーション構築 WPF / Silverlight に限らず CLR objectに対して階層的に利用可能 コードとコンテンツの分離 デザイナーとデベロッパーとの共同作業を効率化する ツール (Visual Studio 2008, Expression Blend 2, (XAML Pad) 等)を使って簡単に作成・利用ができる <Button Width="100">OK <Button.Background> LightBlue </Button.Background> </Button> Button b1 = new Button(); b1.Content = "OK"; b1.Background = new SolidColorBrush (Colors.LightBlue); b1.Width = 100; Dim b1 As New Button b1.Content = "OK" b1.Background = New _ SolidColorBrush _ (Colors.LightBlue) b1.Width = 100 Animation, Triggers, Timelines Templated Button XAMLで生成 <StackPanel> <StackPanel.Triggers> <EventTrigger RoutedEvent=“Button.Click"> <EventTrigger.Actions> <BeginStoryboard> <BeginStoryboard.Storyboard> <Storyboard> <ColorAnimation To="Yellow" Duration="0:0:0.5“ Storyboard.TargetName="TheBrush" Storyboard.TargetProperty="Color" /> UI サービスとして下記の機能 を持つ <DoubleAnimation To="45" Duration="0:0:2" Storyboard.TargetName="LowerEllipseTransform" Storyboard.TargetProperty="Angle" /> • Templates • Layout • Controls Library • Styles and Resources • Animation ... </StackPanel.Triggers> … remainder of contents of StackPanel, including x:Name'd TheBrush and LowerEllipseTransform … </StackPanel> Binding Target Binding Source Dependency Object Object Dependency Property OneWay TwoWay OneWayToSource Property <StackPanel> <Label>Select A Customer</Label> <ListBox Name="myListBox" Background="HoneyDew" ItemsSource= "{Binding {StaticResource mySource}}" </ListBox> </StackPanel> XAMLの機能としてUI を CLR オブジェクト or XMLにバインドできる WPFの依存関係プロパティは、ADO.NET や、 例えばWeb サービス に関連したオブジェクトにバインド可能 値式、プロパティの無効化と依存値の強制、既定値、継承、データ バ インディング、アニメーション、プロパティの変更通知、およびスタイ ル設定をサポート ソート、フィルタ、グループビュー等が適用できる バインドされたデータに対してデータテンプレートの適用が可能 (ex, Silverlight のDataGridの表示列を選択する、列名を変更して表 示) 鈴木 章太郎 アーキテクトエバンジェリスト マイクロソフト株式会社 Silverlight と WPF ( .NET Framework )は、 ともに、RIAのあるいはデスクトップの アプリケーションのプラットフォーム として優れている Silverlight は、.NET Framework のサブ セットではあるが、約“95%” は同様 両者の間におけるスキルと作成済みの ソーコードは再利用できる 一度覚えれば、いずれにも応用が可能 同じ部分: UserControl, CustomControl <Style>, <ControlTemplate> Silverlight 2 だけの部分 - <Style> Write-Once Style Property Styles Support に依拠していない アプリケーションレベルでのテーマのサポートは していない XAMLのルート WPF - <Window>/</Window> or <Page>/</Page> Silverlight - <UserControl></UserControl> WPFにおけるVisualStateManager? SilverlightにおけるTrigger? 鈴木 章太郎 アーキテクトエバンジェリスト マイクロソフト株式会社 コントロール & スキンの 簡単なポーティングを実現する 現在: http://www.codeplex.com/wpf/Release 将来: WPFの次期バージョンで更なる進化 VSM スキンを、既存の WPF コント ロールに追加 WPFToolkit に含まれるもの: ButtonBaseBehavior { Button, ToggleButton} ListBoxItemBehavior ProgressBarBehavior TextBoxBehavior ToggleButtonBehavior {CheckBox, RadioButton} 鈴木 章太郎 アーキテクトエバンジェリスト マイクロソフト株式会社 XAML を利用して、プロパティの変化 やイベントに反応できる Silverlight の将来のリリースにおいて、 登場予定 Trigger と連携する VisualStateManager <Trigger …> <GoToState “MouseOver”/> </Trigger> Silverlight 2 Xmlns 現在は完全に同一 DependencyProperty.Register(…, …, …, callback); コントロールテンプレートの改善 Databinding のバリデーション RoutedEventArgs.Handled その他多くの API シグネーチャの決定と将来の対応 予定機能 WPF 3.5sp1 Storyboard.Begin() の追加 Storyboard.SetTarget(storyboard, element) Shared clocks, animation hold より良い名前参照 XAML 2006 <Label Target="{Binding ElementName=firstName}"> First Name</Label> <TextBox Name="firstNameBox" /> XAML 2009 <Label Target="{x:Reference firstNameBox}">…</> <TextBox Name="firstNameBox" /> またはもっと良い方法としては: <Label Target="firstNameBox">First Name</Label> <TextBox Name="firstNameBox" /> <WriteLine Text=‘[“Hello ” + firstName]’ /> → Windows Workflowで使用 オーサリングをシンプルに XAML 2006 <s:String xmlns:s="clrnamespace:System;assembly=mscorlib">Foo </s:String> XAML 2009 <x:String> <x:Boolean> <x:Int64> <x:TimeSpan> <x:Char> <x:Byte> <x:Decimal> <x:Array> <x:Single> <x:Int16> <x:Object> <x:List> <x:Double> <x:Int32> <x:Uri> <x:Dictionary> Generics の完全サポート XAML 2006 class PersonCollection : ObservableCollection<Person> {} <l:PersonCollection> <Person Name=“Suzuki" /> </l:PersonCollection> XAML 2009 <ObservableCollection x:TypeArguments="Person"> <Person Name=“Suzuki" /> <Person Name=“Sato" /> <Person Name=“Takahashi" /> </ObservableCollection> 任意のディクショナリーキータイプ XAML 2006 String または MarkupExtension key のみ XAML 2009 <Switch x:TypeArguments="x:Int64" Expression="[rating]"> <Sequence x:Key="10">…</Sequence> <Sequence> <x:Key>9</x:Key> … </Sequence> </Switch> → Workflowで使用 メソッド名を超えて XAML 2006 <Button Click="button_Click" /> + markup compilation XAML 2009 <Button Click="button_Click" /> + markup compilation または: <Button Click="{DelegateCreatingME Foo}" /> あるいはさらに:(Worklowでも使える) <Button> <Button.Click> <DelegateCreatingME Name="Foo" /> <Button.Click> </Button> より良い宣言的なタイプのオーサリング XAML 2006 <Window x:Class="WpfApplication1.Window1" … /> XAML 2009 <Activity x:Class="ActivityLibrary1.Prompt" …> <x:SchemaType.Members> <x:SchemaProperty Name="Text" Type="InArgument(x:String)" /> <x:SchemaProperty Name="Result" Type="OutArgument(x:String)" /> </x:SchemaType.Members> <Sequence>…</Sequence> </Activity> 非デフォルトコンストラクタの利用 XAML 2006 <DateTime>00:00:00.0000100</DateTime> XAML 2009 <DateTime> <x:Arguments> <x:Int64>100</x:Int64> <!-- Ticks --> </x:Arguments> </DateTime> 静的ファクトリーメソッドの利用 XAML 2006 Guid guid = Guid.NewGuid(); XAML 2009 <Guid x:FactoryMethod="Guid.NewGuid" /> x:Arguments で作成・編集する まとめ 向上した名前参照 (x:Reference) フル Generics サポート (x:TypeArguments) ビルトインタイプ 任意のディクショナリーキータイプのサポート (x:Key) コンパイルせずにイベントをサポート 新しいプロパティの定義 (x:SchemaType.Members, x:SchemaProperty) 非デフォルトコンストラクタの利用 (x:Arguments) ファクトリーメソッドの利用 (x:FactoryMethod) <CheckBox> hello </CheckBox> <CheckBox> <CheckBox.Content> hello </CheckBox.Content> </CheckBox> <CheckBox Content="hello"/> O-M-V Root Object オブジェクトはメンバーを持つ メンバーは、オブジェクトかつ / または値を持つ いくつかのオブジェクトはコレクション コレクションは、アイテム保持のため、プロパ ティを持つ Types オブジェクトは、XamlTypes のインターフェース メンバーは、XamlMembers のインスタンス object XamlReader.Load(XmlReader) XML Nodes XML Nodes to XAML Nodes Create Object Graph Resolve Type Information Object Graph object XamlReader.Load(XmlReader) XML Nodes XML Node to XAML Node Type Resolution XAML Node to Objects Object Graph object XamlReader.Load(XmlReader) XML Nodes XML Nodes to XAML Nodes Create Object Graph Resolve Type Information Object Graph object XamlReader.Load(XmlReader) XML Nodes XML Node to XamlXmlReader XAML Node Type Resolution XAML Node Object toWriter Objects Object Graph public abstract class XamlReader : IDisposable { abstract bool Read(); abstract XamlNodeType NodeType { get; } abstract abstract abstract abstract NamespaceDeclaration Namespace { get; } XamlType Type { get; } XamlMember Member { get; } object Value { get; } virtual void Skip(); virtual XamlReader ReadSubtree(); abstract XamlSchemaContext SchemaContext { get; } ... } public abstract class XamlWriter : IDisposable { void WriteNode(XamlReader reader); abstract void WriteNamespace( NamespaceDeclaration namespaceDeclaration); abstract void WriteStartObject(XamlType type); abstract void WriteGetObject(); abstract void WriteEndObject(); abstract void WriteStartMember(XamlMember member); abstract void WriteEndMember(); abstract void WriteValue(object value); ... } Compact Binary – .baml StartObject ST=Ca nvas StartMember SM=Chi ldren StartObject ST=B utton StartMember SM=Backgr ound TeST StartMember SM=Co ntent Textual - .xaml StartObject ST=B utton <Canvas> <Button Background="Green"> Ok </Button> <Button Content="Cancel"> <Button.Background> Red </Button.Background> </Button> </Canvas> “Gr een ” TeST “ O k ” “ R e d ” StartMember SM=Backgr ound TeST StartMember SM=Co ntent TeST “Can cel” Canvas Button Object Graph ON ST=Ca nvas PN SM=Chi ldren ON ST=Bu tton ON ST=Bu tton PN SM=Backgr ound PN SM=Co ntent TN “Gre en” TN “ O k ” PN SM=Backgr ound TN “ R e d ” DOM Tree PN SM=Co ntent TN “Canc el” Button B BamlReader BamlWriter X XamlXmlReader ObjectWriter XamlXmlWriter ObjectReader Xaml Saving (O から Xへ) Optimizing Xaml to Binary Form (X からBへ) Binary Form Loading @ Runtime (B から0へ) Designers – loading into a DOM & Objects(DOM と Object へのロード) D DomReader Xaml Loading @ Runtime (X から Oへ) DomWriter Primary Scenarios O X XamlXmlReader ObjectWriter XamlXmlWriter ObjectReader 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 まとめ データモデル : O-M-V + Types System.Xaml.dll XAML, BAML, Objects,その他にわたる、 多くのシナリオは、単一のAPIで実現可能 ファイルコンバーターのための基盤 System.Xaml CTP はまもなくリリース 予定 : http://go.microsoft.com/fwlink/?LinkId=132499 .NET 3.0 .NET 3.5 .NET 4.0 WPF Rich XAML Vocabulary Rich XAML Vocabulary Rich XAML Vocabulary WF Some XAML Vocabulary Some XAML Vocabulary Rich XAML Vocabulary WCF No XAML Vocabulary Some XAML Vocabulary Rich XAML Vocabulary ストックアドバイス デモアプリケーション 特定の株を買うときに、2人のアナリスト からアドバイスを貰う WPF アプリ Button.Click WCF アドバイス サービス1 WF ワークフロー WCF クライアント 操作 WCF クライアント 操作 UI を更新 WCF アドバイス サービス2 鈴木 章太郎 アーキテクトエバンジェリスト マイクロソフト株式会社 Say what you want without saying how to do it WPF WCF WF XAML で宣言的にモデルを作成できる XAML Readyフレームワーク! オブジェクトベースのシステムのためのシン プルなファイルフォーマット XAMLのためのデザインのベネフィット: XML リーディング / ライティング マークアップ== オブジェクトモデル .NET との一貫性 人間が可読可能な XML より簡単にツールで実現できる イベントベースのプログラミングモデル Ride the XAML wave! マイクロソフトはXAMLに多大な投資をしている Oslo モデリングツール Quadrant (予定) Visual Studio 2010 IDE(予定) Silverlight ver. X, WPF ver. 4.0 or more (予定) YOU! YOU! YOU! YOU! YOU! YOU! WPF WCF YOU! YOU! YOU! WF YOU! YOU! YOU! XAML 2009 言語の拡張 System.Xaml.dll より速く! XAML ドキュメントをより簡単に、パース し、プロセスし、変換する XAML Ready Framework より多くの領域をXAMLのボキャブラリで モデリング可能! T2-301 T2-302 T2-304 T2-305 T2-401 T2-402 T3-306 T3-302 T3-401 Windows 7:タスクバーを活用したアプリケーションの開発 Windows 7:マルチタッチ アプリケーションの開発 WPF ロードマップ Sliverlight の未来: コントロールとモバイル対応 Windows 7:リボン UI 対応アプリケーションの開発 Windows 7:グラフィックスAPI詳解 WCF/WF 4.0:ワークフローサービス開発の進化 はじめての “Oslo” - モデリング プラットフォーム 実践”Oslo”-モデリングプラットフォーム System.Xaml.dll CTP (予定) http://go.microsoft.com/fwlink/?LinkId=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/u508527/blog/ © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, 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.
© Copyright 2024 ExpyDoc