Open棟梁Project - マイクロソフト系技術情報 Wiki
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[デスクトップ・アプリ]]
--[[XAML based UI>WPF/Silverlight]]
--[[VS系コンテンツ]]

* 目次 [#t7553f38]
#contents

*概要 [#lda3305b]
[[Windows Forms]]の後継のUIテクノロジである。

-[[WPF]] は、[[Windows Forms]] の問題点を解決したWindows の画面構築技術である。
-優れたアーキテクチャを採用しているが、[[下記の理由>#g77ae5d3]]により、実装難易度は高い。

*詳細 [#pa3aca64]

**特徴 [#g77ae5d3]
-[[XAML]]というマークアップを使用するのが最大の特徴となっている。~
--[[XAML]]は使いこなせば非常に優れた仕組みであるが、難易度が高い。

--[[XAML]]は、マークアップ言語ではあるものの、以下のような複雑な処理の実装に使用される。
---コントロールの表示のカスタマイズ
---データバインディングを行うBindingマークアップ拡張

--Visual Studioデザイナとも連動するが、~
[[XAML]]をテキストエディタで直接記述する必要があるケースがある。

-各コントロールは、Window Controlではなくウィンドウハンドルを持たない(独自描画)。
-[[ClickOnce]]と、ブラウザの中でWPFを動作させる「[[XAML]] ブラウザー アプリケーション ([[XBAP]])」をサポートする。

**[[機能>WPFの機能]] [#z44b3447]
**[[アーキテクチャ>WPFのアーキテクチャ]] [#j150ee22]
**[[コントロール>WPFのコントロール]] [#v00a9c89]
**[[XAML]] [#p410257d]

**SI、エンプラ系のドメインでの実績について [#v173e1f6]
***状況 [#xf465268]
このため、2006年に.NET3.0に同梱されてリリースされているが、”個人的感覚では”、~
[[Windows Forms]]と比べると、SI・業務アプリでの採用実績や開発経験者の少ない状態が続いていると思う。

-(1)
 先日行った開発者向け調査の結果を見ると、名前は聞いたことあるけど実際には開発したことない、という方がまだ大半かもしれません。
 
 Windows フォームから Windows Presentaion Foundation (WPF) へ
 MSDN オンライン チームブログ - Site Home - MSDN Blogs
 http://blogs.msdn.com/b/devamm/archive/2010/12/27/10109171.aspx

-(2)
 今回の.NET中心会議では参加登録時にアンケート調査を行っているのですが、その結果(=下の図)を見ると、WPFの利用者は非常に少ないようです。
 
 いま使うべき、学ぶべき.NETテクノロジはどれ? - @IT
 http://www.atmarkit.co.jp/fdotnet/chushin/chushinmeeting_01/chushinmeeting_01_01.html

***トレンド [#jc694dd9]
最近(2015年現在)のトレンドとしては、
-HTML/CSS/JavaScriptやHTML5
-スマホ ネイティブなど

のUIサブシステムが重視されている。

この理由は、
-スマホ、タブレット向けにUIを提供できる、クロスプラットフォーム性が重視されている。

-HTML/CSS/JavaScriptやHTML5で開発するWeb画面がリッチクライアントに近づきつつある。~
(また、jQuery等は体系的な知識が必要になるWPFとは異なり、スニペット的に使用できる)

などが考えられ、

それにより、Windows独自のリッチクライアント技術が下火になったのではないだろうか。

-WPF は死んだのか?  Moonmile Solutions Blog~
http://www.moonmile.net/blog/archives/6156

([[XAML]]を使用して開発を行う[[Silverlight]]や[[Windowsストアアプリ]]も同様。詳しくはリンク先を参照)。

*参考 [#g0d4f381]
**MSDN [#l568b9bd]
***基礎 [#v3e64f75]
-WPFの基礎~
http://msdn.microsoft.com/ja-jp/library/ms746927.aspx
--WPFアーキテクチャ~
http://msdn.microsoft.com/ja-jp/library/ms750441.aspx
--WPFのXAML~
http://msdn.microsoft.com/ja-jp/library/ms747122.aspx
--基本要素~
http://msdn.microsoft.com/ja-jp/library/ms746683.aspx
--要素のツリーおよびシリアル化~
http://msdn.microsoft.com/ja-jp/library/ms750605.aspx
--プロパティ~
http://msdn.microsoft.com/ja-jp/library/ms753192.aspx
--イベント(WPF)~
http://msdn.microsoft.com/ja-jp/library/ms753115.aspx
--入力およびコマンド~
http://msdn.microsoft.com/ja-jp/library/ms751593.aspx
--リソース(WPF)~
http://msdn.microsoft.com/ja-jp/library/ms742538.aspx
--スタイルとテンプレート : 概念~
http://msdn.microsoft.com/ja-jp/library/bb613570.aspx
--レイアウト システム~
http://msdn.microsoft.com/ja-jp/library/ms745058.aspx
--スレッド モデル~
http://msdn.microsoft.com/ja-jp/library/ms741870.aspx
--デジタル インク~
http://msdn.microsoft.com/ja-jp/library/ms752707.aspx

***詳細 [#wdba7987]
-プロパティ~
http://msdn.microsoft.com/ja-jp/library/ms753192.aspx
--依存関係プロパティの概要~
http://msdn.microsoft.com/ja-jp/library/ms752914.aspx
--添付プロパティの概要~
http://msdn.microsoft.com/ja-jp/library/ms749011.aspx
--依存関係プロパティのコールバックと検証~
http://msdn.microsoft.com/ja-jp/library/ms745795.aspx
--カスタム依存関係プロパティ~
http://msdn.microsoft.com/ja-jp/library/ms753358.aspx
--依存関係プロパティのメタデータ~
http://msdn.microsoft.com/ja-jp/library/ms752375.aspx
--フレームワーク プロパティ メタデータ~
http://msdn.microsoft.com/ja-jp/library/ms751554.aspx
--依存関係プロパティ値の優先順位~
http://msdn.microsoft.com/ja-jp/library/ms743230.aspx
--読み取り専用の依存関係プロパティ~
http://msdn.microsoft.com/ja-jp/library/ms754044.aspx
--プロパティ値の継承~
http://msdn.microsoft.com/ja-jp/library/ms753197.aspx
--依存関係プロパティのセキュリティ~
http://msdn.microsoft.com/ja-jp/library/ms752808.aspx
--DependencyObjectの安全なコンストラクター パターン~
http://msdn.microsoft.com/ja-jp/library/ms754149.aspx
--コレクション型依存関係プロパティ~
http://msdn.microsoft.com/ja-jp/library/aa970563.aspx
--XAML読み込みと依存関係プロパティ~
http://msdn.microsoft.com/ja-jp/library/bb613563.aspx

--プロパティに関する「方法」トピック~
http://msdn.microsoft.com/ja-jp/library/ms753325.aspx
---方法 : 依存関係プロパティを実装する~
http://msdn.microsoft.com/ja-jp/library/ms750428.aspx
---方法 : 依存関係プロパティの既定値を復元する~
http://msdn.microsoft.com/ja-jp/library/ms749010.aspx
---方法 : 依存関係プロパティの所有者の種類を追加する~
http://msdn.microsoft.com/ja-jp/library/ms754002.aspx
---方法 : 添付プロパティを登録する~
http://msdn.microsoft.com/ja-jp/library/ms753957.aspx
---方法 : 依存関係プロパティのメタデータをオーバーライドする~
http://msdn.microsoft.com/ja-jp/library/ms754209.aspx

-入力およびコマンド~
http://msdn.microsoft.com/ja-jp/library/ms751593.aspx
--入力の概要~
http://msdn.microsoft.com/ja-jp/library/ms754010.aspx
--コマンド実行の概要~
http://msdn.microsoft.com/ja-jp/library/ms752308.aspx
--フォーカスの概要~
http://msdn.microsoft.com/ja-jp/library/aa969768.aspx
--コントロールのフォーカスのスタイルと FocusVisualStyle~
http://msdn.microsoft.com/ja-jp/library/bb613567.aspx
--チュートリアル : 初めてのタッチ アプリケーションの作成~
http://msdn.microsoft.com/ja-jp/library/ee649090.aspx
--入力およびコマンドに関する「方法」トピック~
http://msdn.microsoft.com/ja-jp/library/ms752051.aspx

-リソース~
http://msdn.microsoft.com/ja-jp/library/ms742538.aspx
--リソースの概要~
http://msdn.microsoft.com/ja-jp/library/ms750613.aspx
--リソースとコード~
http://msdn.microsoft.com/ja-jp/library/ms752326.aspx
--マージされたリソース ディクショナリ~
http://msdn.microsoft.com/ja-jp/library/aa350178.aspx
--リソースに関する「方法」トピック~
http://msdn.microsoft.com/ja-jp/library/ms751804.aspx

--スタイルとテンプレート : 概念~
http://msdn.microsoft.com/ja-jp/library/bb613570.aspx
--スタイルとテンプレート~
http://msdn.microsoft.com/ja-jp/library/ms745683.aspx
--ControlTemplateの作成による既存のコントロールの外観のカスタマイズ~
http://msdn.microsoft.com/ja-jp/library/ee230084.aspx
--方法 : ControlTemplateによって生成された要素を検索~
http://msdn.microsoft.com/ja-jp/library/bb613586.aspx

>↓

--MSDN > Windows Presentation Foundation~
> コントロール  > コントロールのカスタマイズ > ControlTemplateの例~
http://msdn.microsoft.com/ja-jp/library/aa970773.aspx

|Button ControlTemplate の例|CheckBox ControlTemplate の例|
|ComboBox ControlTemplate Example|ComboBoxItem ControlTemplate の例|
|ContextMenu ControlTemplate の例|DocumentViewer ControlTemplate の例|
|Expander ControlTemplate の例|Frame ControlTemplate の例|
|GroupBox ControlTemplate の例|Label ControlTemplate の例|
|ListBox ControlTemplate の例|Listboxitem ControlTemplate の例|
|ListView ControlTemplate の例|ListViewItem ControlTemplate の例|
|Menu ControlTemplate の例|MenuItem ControlTemplateの例|
|NavigationWindow ControlTemplate の例|ProgressBar ControlTemplate の例|
|RadioButton ControlTemplate の例|ScrollBar ControlTemplate の例|
|ScrollViewer ControlTemplate の例|Slider ControlTemplate の例|
|StatusBar ControlTemplate の例|TabControl ControlTemplate の例|
|TabItem ControlTemplate の例|TextBox ControlTemplate の例|
|ToolBar ControlTemplate の例|ToolTip ControlTemplate の例|
|TreeView ControlTemplate の例|TreeViewItem ControlTemplate の例|
|Window ControlTemplate の例||

***その他 [#w6be4d0d]
-MSDN > グラフィックスとマルチメディア~
http://msdn.microsoft.com/ja-jp/library/ms752061.aspx

--3-Dグラフィックス~
http://msdn.microsoft.com/ja-jp/library/ms746698.aspx
---3-Dグラフィックスの概要~
http://msdn.microsoft.com/ja-jp/library/ms747437.aspx
---3-D変換の概要~
http://msdn.microsoft.com/ja-jp/library/ms753347.aspx
---WPFの3Dパフォーマンスの最大化~
http://msdn.microsoft.com/ja-jp/library/bb613553.aspx
---3-Dグラフィックスに関する「方法」トピック~
http://msdn.microsoft.com/ja-jp/library/ms746607.aspx

--アニメーションとタイミング~
http://msdn.microsoft.com/ja-jp/library/ms749238.aspx
---アニメーションの概要~
http://msdn.microsoft.com/ja-jp/library/ms752312.aspx
---アニメーションとタイミング システムの概要~
http://msdn.microsoft.com/ja-jp/library/aa969813.aspx
---From / To / Byアニメーションの概要~
http://msdn.microsoft.com/ja-jp/library/aa970265.aspx
---キー フレーム アニメーションの概要~
http://msdn.microsoft.com/ja-jp/library/ms742524.aspx
---パス アニメーションの概要~
http://msdn.microsoft.com/ja-jp/library/aa970561.aspx

**@IT > Insider.NET [#h4218ff4]
-連載:WPF入門~
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_index/index.html
--第1回 いよいよWPFの時代 WPFの習得を始めよう~
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_01/introwpf_01_01.html 
--第2回WPFとXAMLの関係とは? XAMLの基礎を学ぶ~
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_02/introwpf_02_01.html 

----
Tags: [[:.NET開発]], [[:UIサブシステム]], [[:WPF/Silverlight, XAML]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS