Mais conteúdo relacionado
Semelhante a これからはじめる XAML - WPF プログラミング (20)
Mais de インフラジスティックス・ジャパン株式会社 (20)
これからはじめる XAML - WPF プログラミング
- 2. 2
自己紹介
池原 大然
Microsoft MVP for Windows Platform Development
XAML スキー
Twitter ID: @Neri 78
インフラジスティックス・ジャパン株式会社
製品担当
Web: http://jp.infragistics.com
Email: dikehara@infragistics.com
- 4. 4
本日の内容 – WPF トレーニングからの抜粋
XAML を利用した UI 構築
データ コンテキストを利用したデータ バインディングの利用
データと UI の連携
まとめ:学習を進めるにあたって
- 6. 6
XAML とは?
XAML = Extensible Application Markup Language
XML を拡張したアプリケーション マークアップ言語
HTML に近く WPF では「宣言的」に UI を記述する言語として利用される
MSDN – 新井省三のBlog - XAML とは何か?
http://blogs.msdn.com/b/shozoa/archive/2014/07/23/what-s-xaml.aspx
<Button VerticalAlignment="Center"
FontSize="72"
FontWeight="Bold"
Content="ぽちっとな" />
- 7. 7
XAML 構文 – 属性構文(プロパティ値)
属性名=“属性値” で指定
属性名: プロパティの CLR メンバ名
属性値: 引用符(“) で囲まれた [文字列 ]
<Button VerticalAlignment="Center"
FontSize="72"
FontWeight="Bold"
Content="ぽちっとな" />
- 8. 8
コンテンツ プロパティ属性
XAML では [ContentProperty] 属性に設定されている
プロパティへの値を直接定義できる
多くの場合 [Object 型] = コンテンツとして「なんでも」指定可能
<Button VerticalAlignment="Center"
FontSize="72"
FontWeight="Bold">
ぽちっとな
</Button>
- 9. 9
XAML 構文 – プロパティ要素構文
属性構文では表現できない場合に有用
<属性名>属性値</属性名>
先ほどの例と同じ意味を持つ
<Button VerticalAlignment="Center"
FontSize="72"
FontWeight="Bold">
<Button.Content>
ぽちっとな
</Button.Content>
</Button>
- 10. 10
複雑な要素の指定
コンテンツ プロパティ + プロパティ要素構文を利用することで複雑な UI を定義
<Button VerticalAlignment="Center“
FontSize="72“
FontWeight="Bold">
<StackPanel Orientation="Horizontal">
<Image Width="128" Height="128“
Source="Images/MedicalBag128.png" />
<TextBlock Text="ぽちっとな“
VerticalAlignment="Center" />
</StackPanel>
</Button>
- 16. 16
データ コンテキストとは?
FrameworkElement クラスで実装されているプロパティ
上位階層の DataContext から子階層の DataContext へ値を継承することができる
• 画面、あるいは領域に共通したデータを格納できる
(複数データも格納できる)
Window.DataContext
=
“ぽちっとな”
上位階層の
DataContext が
継承されている
- 19. 19
データ バインディングの概念
データ バインディング
あるオブジェクトのプロパティ値 (ターゲット)と、
他のオブジェクト (ソース) を結びつける仕組み
一方が更新されたとき、
他方に更新された値を反映できる
(単方向、双方向)
XAML により宣言的なデータバインディングが可能
依存関係プロパティ システムを活用
TextBlock
TextProperty
Slider
DataContextBinding Object
ターゲット ソース
- 26. 26
参考:
複雑なコントロールであっても基本的な考え方は同じ
DataGrid にコレクションをバインドする
DataGridRow.DataContext に 1 行分のデータが割り当てられる
DataGridCell ではセルが属する列 に指定された Key 値に基づいて
1 行分のデータから列に対応する値がバインディングされる
OrderID OrderDate Sales
00114 6/2/2015 3:11: 28 AM 33445
00106 6/17/2015 3:11:28 AM 77289
…
…
…
…
- 29. 29
それぞれの UI にデータを表示させる
1. TextBlock に従業員の情報
2. ListBox に従業員が
受け持っている顧客
3. DataGrid に ListBox で選択
された顧客に紐づく受注情報
TextBlock
TextBlock
ListBox DataGrid
- 33. 33
データと UI の連携
保存すべきデータは全て データ コンテキスト プロパティに集約
データ コンテキスト バインディングを介して UI にデータを表示
目的に合わせて UI コントロールを変更
目的に合わせてテンプレート、スタイルをカスタマイズ
データ バインディングを利用することでユーザーの入力結果が
ダイレクトにデータに反映できる
ビジネスロジック部では入出力されたデータの管理や保存を行う
- 35. 35
まずはここから:リソース
MSDN – WPF
https://msdn.microsoft.com/ja-jp/library/aa970268%28v=vs.110%29.aspx
荒井さんの Blog
http://blogs.msdn.com/b/shozoa/archive/2014/07/23/what-s-xaml.aspx
@IT – WPF入門
http://www.atmarkit.co.jp/ait/subtop/features/dotnet/app/introwpf_index.html
Infragistics WPF コントロール
http://jp.infragistics.com/WPF
- 36. 36
新しい言語パラダイム = 新要素
スタイル
テンプレート
データ テンプレート
ビヘイビアー
アクション
添付プロパティ
変更通知
テーマ
データ駆動、データ中心
渡された「データ」を「どう表現するか」
を常に意識する
- 38. 38
インフラジスティックスのサービス・製品
XAML トレーニング
一般的な XAML の知識から実践的なアプリケーション構築方法まで、
「これから」XAML を活用したアプリケーションを構築するための
ノウハウを共有
WPF をはじめとした UI コントロール
「どう表現するか」を予めデザインした UI を利用することで
「カスタマイズ」という手間を省く
Windows Forms ライクな開発手法にも対応