using System; using System.Windows; public class App { [STAThread] public static void Main() { Application app = new Application(); Window win = Window(); win.content = Hello WPF Code ; app.run(win); } } Copyright 2006 Archway Inc. Page 1
<Window xmlns="http://schemas.microsoft.com/ winfx/2006/xaml/presentation" xmlns:x="http://schemas http://schemas.microsoft.com microsoft com /winfx/2006/xaml" > Hello XAML </Window> Copyright 2006 Archway Inc. Page 2
Windows Vista 世代の ユーザインターフェイス ~ 開発編 ~ 株式会社アークウェイ www.archway.co.jp 代表取締役社長.NET コンサルタント森屋英治 (Hideharu Moriya) Microsoft MVP Solutions Architect Copyright 2006 Archway Inc. Page 3
Agenda 次世代 UI 開発 WPFのコンセプト WPF の構成要素 DAL スタイル 開発スタイル アーキテクチャスタイル 言語 (XAML) スタイル 特徴的な機能 スタイル リソース データバインド まとめ Appendix Copyright 2006 Archway Inc. Page 4
Innovation or Commodity Copyright 2006 Archway Inc. Page 5
Enterprise App 20= 2.0= Experience + App Copyright 2006 Archway Inc. Page 6
Copyright 2006 Archway Inc. Page 7
次世代 UI 開発のコンセプト 技術的な統合 ( これまでの様々な技術の統合 ) 2D {GDI, GDI+} UI {User32, WinForm} Media {DirectShow} 3D {Direct3D,OpenGL} ベクトルグラフィック すべてDirect3D 経由でレンダリングされる GPUのフル活用 宣言型プログラミングを可能に XAML(zamel) UI デザインを XML で記述可能に イノベーション エンタープライズアプリケーションの進化 3Dアプリケーションへの挑戦 Copyright 2006 Archway Inc. Page 8
WPF の構成要素 ドキュメントサービス ユーザーインターフェースサービス XPSドキュメント アプリケーションサービス コントロール パッケージングサービス デプロイメントサービス レイアウト データバインディング メディアサービス 基本サービス イメージング 特殊効果 2D 3D テキスト オーディオ ビデオ XAML アクセシビリティ アニメーション 入力およびイベント処理 合成エンジン プロパティシステム Copyright 2006 Archway Inc. Page 9
DAL スタイル D Development Style A Architecture t Style L Language Style Copyright 2006 Archway Inc. Page 10
開発スタイル Copyright 2006 Archway Inc. Page 11
開発スタイル Designer Emotional Connection Look, behavior, data visualization, usability, brand impact Developer Functional Capabilities Deployment, function, data connection and integrity, IT process, security Paper JPG / TIFF MOV / WMV PSD PPT XAML C++ C# VB.NET Copyright 2006 Archway Inc. Page 12
プロジェクトタイプ Windows Application (WPF) XAML Brower Application (WPF) Copyright 2006 Archway Inc. Page 13
アーキテクチャスタイル Copyright 2006 Archway Inc. Page 14
通信用管理Application Architecture For.Net ユーザー ユーザーインターフェイスコンポーネント ユーザーインターフェイスプロセスコンポーネントユーザーインターフェイスコンポーネント運サービスインターフェイスフェイス通ビジネス ビジネス ビジネス ワークフロー コンポーネント エンティティ データアクセスロジックコンポーネント サービスエージェント データソースサービス Copyright 2006 Archway Inc. Page 15
通信Application Architecture For.Net With WPF ユーザー DTO データ転送オブジェクト 運用管理DataSet DataTable カスタムオブジェクト XML ユーザーインターフェイスコンポーネント Application(WPF) WindowsApplication XAMLBrowserApplication(WPF) ユーザーインターフェイスプロセスコンポーネント サービスインターフェイス ビジネス ビジネス ビジネス ワークフロー コンポーネント エンティティ データアクセスロジックコンポーネント サービスエージェント データソースサービス Copyright 2006 Archway Inc. Page 16
アーキテクチャの要素 アーキテクチャの決定は まず必要な要素 ( 関心 ) を選択する 非機能要件のトレードオフ パフォーマンス セキュリティ 配置条件 要素が多ければ多いほど開発コストは増大し 配置 運用コストも増大する 対象となる開発で必要な分だけの要素を選択する ユーザインターフェイスイ データアクセス シンプルなアーキテクチャを採用 Copyright 2006 Archway Inc. Page 17
アーキテクチャの傾向と対策 エンタープライズアプリケーションは ほとんどデータベースからの情報取得 更新 データバインド可能なオブジェクトの選択 データストアからの取り出しの容易性 データセット データテーブル 注意点 : なるべく分散させない 分散トランザクション 分散オブジェクト 本当に必要なときのみ Copyright 2006 Archway Inc. Page 18
言語 (XAML) スタイル Copyright 2006 Archway Inc. Page 19
WPF 開発言語.NET に対応している言語すべて C# VB.NET IronPython そして XAML(eXtensible Application Markup Language) Copyright 2006 Archway Inc. Page 20
XAML XAML( extensible Application Markup Language) HTML の開発体験を WinForm に! 言語としての XAML コンパイルされて動作 言語の範囲は マークアップの範囲に依存し すべて対応しているわけではない パーシャルクラスの理解 WF (Workflow Foundation) にも適用されている Copyright 2006 Archway Inc. Page 21
Design <XAML> Code Copyright 2006 Archway Inc. Page 22
XAML & C#Code <Button Foreground= Green FontSize= 20pt > XAML Button </Button> Button button = new Button(); Button.Foreground = Brushes.Green; Button.FontSize = 20; Button.Content = Code Button ; Copyright 2006 Archway Inc. Page 23
System.Windows.Control 様々な UI コントロール Copyright 2006 Archway Inc. Page 24
Copyright 2006 Archway Inc. Page 25
スタイル Copyright 2006 Archway Inc. Page 26
スタイル 概念は HTMLのスタイルシートと同様だが WPFにおける スタイル は リソース スタイル テンプレート トリガ ストーリボードを統合するトリボ広い概念の用語 リソースに配置して利用 <Style > <Setter /> <EventSetter /> </Style> Copyright 2006 Archway Inc. Page 27
スタイルの設定 Copyright 2006 Archway Inc. Page 28
トリガーの利用 Copyright 2006 Archway Inc. Page 29
複数コントロールへの適用 Copyright 2006 Archway Inc. Page 30
リソース Copyright 2006 Archway Inc. Page 31
リソース ローカルで利用するリソース Visual Studioで一般的に使われるリソースと若干異なる ResourceDictionaryを型とするキーとオブジェクトからなるリソースディクショナリ XAMLでは すべての要素 Applicationなどに配置可能 ResouceDictionary を XAML として別ファイルに分離することも可能 Copyright 2006 Archway Inc. Page 32
Application リソースの利用 App.xaml Window1.xaml 様々な要素 Window,Panel,Control Application にリソースを配置できる Copyright 2006 Archway Inc. Page 33
リソースディクショナリの作成 Styles.xaml Copyright 2006 Archway Inc. Page 34
リソースディクショナリの参照 Copyright 2006 Archway Inc. Page 35
データバインド Copyright 2006 Archway Inc. Page 36
単純なバインド XAML Code Binding bind = new Binding(); bind.source = bar; bind.path = new PropertyPath(ScrollBar.ValueProperty); label.setbinding(label.contentproperty, bind); Copyright 2006 Archway Inc. Page 37
Binding Mode <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <Canvas> <TextBox Name="theTextBox" Text="Hello" /> <TextBox Canvas.Top="25" Text="{Binding ElementName=theTextBox, Path=Text, Mode=TwoWay}" /> </Canvas> </Window> バインディングモード TwoWay 説明 バインド先のコントロールまたはバインドのソースからの変更を 双方向でもう一方に移動する ( これが既定モード ) OneWay ソースからの変更だけをスからの変更だけを コントロールに移動します ソースで変更が発生するとスで変更が発生すると バインド先のコントロールのデータが変更される OneTime 起動時にのみデータがバインドされ コントロールに初めてデータが書き込まれた後は ソースの変更は無視される Copyright 2006 Archway Inc. Page 38
バインドのタイミングの制御 バインドによって変更がプッシュされるタイミングも指定できる UpdateSourceTrigger タイプを指定することにより バインドが特定のタイミングでしか変更を行わないように指定できる UpdateSourceTrigger プロパティは ソースを変更によって更新するタイミングを指定する Mode=TwoWayのバインド ( 既定 ) と併用する場合にのみ有効 {Binding ElementName=theTextBox, Path=Text, UpdateSourceTrigger=LostFocus} UpdateSourceTrigger Explicit LostFocus 説明 BindingExpression.UpdateSource メソッドを明示的に呼び出した場合のみ ソースソースが更新される バインドされたコントロールがフォーカスを失ったとき ソースが更新される PropertyChanged プロパティが変更されるたびに 変更がソースに更新されます 変更がソこれが既定の動作 Copyright 2006 Archway Inc. Page 39
XAML のデータバインド ほとんどのアプリケーションでは XMLやオブジェクト データーセットなどにバインドしている これまでの.NETのデータバインドでは バインディングの形態が限定されていて完全なオブジェクトとの連携や拡張が困難だった WPFでは上記の問題にチャレンジしている 現在対応しているデータプロバイダ XmlDataProvider XML とのバインド ObjectDataProvider.NET オブジェクトとのバインド Copyright 2006 Archway Inc. Page 40
XMLDataProvider <StackPanel> <StackPanel.Resources> <XmlDataProvider x:key="favoritecolors"> <x:xdata> <Colors xmlns=""> <Color>Blue</Color> <Color>Black</Color> </Colors> </x:xdata> </XmlDataProvider> </StackPanel.Resources> <TextBlock HorizontalAlignment="Center FontWeight="Bold"> XML Example </TextBlock> <ListBox Width="200" Height="300" ItemsSource="{Binding Source={StaticResource FavoriteColors}, XPath=/Colors/Color}"></ListBox> l /Li tb </StackPanel> Copyright 2006 Archway Inc. Page 41
XMLDataProvider RSS とのバインド URL あるいは ファイルパスも可 Copyright 2006 Archway Inc. Page 42
DetaContext/DataTemplate DetaContext を利用すると Source を設定する必要がなくなる Copyright 2006 Archway Inc. Page 43
RSS リーダ Copyright 2006 Archway Inc. Page 44
ObjectDataProvider Copyright 2006 Archway Inc. Page 45
ObjectDataProvider Window.xaml.cs Copyright 2006 Archway Inc. Page 46
まとめ コンセプト WPF 構成要素 DAL スタイル 開発スタイル アーキテクチャ 言語 (XAML) 特徴的な機能 スタイル リソース データバインド Copyright 2006 Archway Inc. Page 47
Innovation or Commodity Copyright 2006 Archway Inc. Page 48
Copyright 2006 Archway Inc. Page 49
ご静聴ありがとうございました 株式会社アークウェイ森屋英治 Copyright 2006 Archway Inc. Page 50
Appendix Copyright 2006 Archway Inc. Page 51
XAML 省略した表記 <Canvas> <TextBox Name="theTextBox" Text="This is TextBox" /> <TextBlock Canvas.Top="25" Text="{Binding ElementName=theTextBox,Path=Text} /> </Canvas> Elementを {} の中に属性 値を, でつなげていく省略した表記 先ほどの表記 <Canvas> <TextBox Name="theTextBox" Text="This is TextBox" /> <TextBlock Canvas.Top= Top="25"> <TextBlock.Text> <Binding ElementName="theTextBox" Path="Text" /> </TextBlock.Text> T t </TextBlock> </Canvas> Copyright 2006 Archway Inc. Page 52