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

...工事中...
-[[戻る>WPF/Silverlight]]

* 目次 [#p4d7e1a8]
#contents

*概要 [#r7767a18]
XAMLについて。

参考
XAMLは、

-WPF は死んだのか?  Moonmile Solutions Blog~
http://www.moonmile.net/blog/archives/6156
-WPF で XAML で書く。 
-Siverlight を XAML で書く。
-Windows Phone 8.1 アプリ
-Windows Store App
-Xamarin.Forms
-WFのワークフロー定義

*WPF/Silverlight [#z122358b]
などで使用されている。

**概要 [#x76efea7]
WPFは、.NET Framework 3.0で新しく提供され、Windows Vistaで全面的に採用された、リッチでインタラクティブなUIアプリケーションを開発・実行するためのUIサブシステム(クラス ライブラリ・UIコントロールのセットを含むランタイム・フレームワーク)。Windows VistaのUIサブシステムにはWPFが全面的に採用されており、今後のWindowsのUIアプリケーション開発の標準技術として利用できる。
最近は、[[Xamarin]]や、[[UWP]]などでもXAMLが使用されているもよう。

-[[WPF]]
-[[Silverlight]]
以下では、WPF / Siverlight 開発におけるXAMLの利用方法を説明する。

**特徴 [#w6f7a746]
WPF / Silverlightは、高速なグラフィックスではなく、
-メディア リッチ:音声・動画の組み合わせ
-インタラクティビティー:画像や音声などによって示される内容に応答する操作性
*詳細 [#ya0882a1]

を実現するUIサブシステムであるため、Direct3D、DirectShow、Media Foundationなどを使用して開発する3Dゲームや高品質なビデオ再生アプリの開発には向かないが、業務アプリケーション開発に必要な標準コントロールを備えており、従来の業務アプリケーションにリッチでインタラクティブな効果を追加することも可能である。
**UIサブシステム [#o7c28db9]

***開発環境 [#w8b19d45]
WPF / Silverlight は、Visual Studio 2008以降や、Expression Blendを使用して開発が可能。Expression Blendはデザイナ向けツールであり、VSに無い以下の機能を有している。
-GUIを使用した図形オブジェクトの作成・編集
-GUIを使用したグラデーションの作成・編集
-GUIを使用したアニメーションの作成・編集
-,etc.
***[[WPF]] [#ea54d1a9]

***実行環境 [#t29e32be]
***[[Silverlight]] [#n578d273]

-[[WPF]]
-[[Silverlight]]
**WPF / Silverlight以降 [#d54b7a7b]
-ココからは、XAML based UIとして、~
[[WPF/Silverlight]]の登場以降に追加されたもの。

*開発方法 [#g62a273d]
WPF / Silverlightでは、P層のUI部分を(HTMLのようなXMLベースのマークアップ言語である)XAMLを使用して記述し、イベントなどのプログラム部分はC#、VBを使用して開発することができる(Sliverlight 1.0はJavaScriptのみ対応)。また、XAMLは、XMLをベースとしており各要素からツリー構造のCLRオブジェクトをインスタンス化できる。このため、XAMLは、「ツリー構造のCLRオブジェクトをインスタンス化するためのマークアップ言語」と説明することも可能である 。XAMLによるCLRオブジェクト生成の例は、以下を参考にできる。
-昨今、JavaScriptのUI開発技術の生産性が上がってきたので、~
XAML系は、もう頑張らなくて良いのでは?という気もする。

-連載:WPF入門:第2回 WPFとXAMLの関係とは? XAMLの基礎を学ぶ - @IT~
--http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_02/introwpf_02_01.html
--http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_02/introwpf_02_02.html
--http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_02/introwpf_02_03.html
***Metro or Modern [#a0c50661]
2012年8月から、MetroからModernに名称が変更。

また、WPF / Silverlightアプリケーションの開発には以下のような特徴がある。
-下記コンセプトのUIを、
--XAML based UIとして開発。
--Windowsプラットフォームに限定される。

-UI部分とプログラム部分を分離して記述・実装できる。~
UI部分のXAMLは、VS・Expression Blendなどのツールを使用して記述できる。
-参考
--Modern UI - Wikipedia~
https://ja.wikipedia.org/wiki/Modern_UI

-プログラム部分は、VB・C#を使用して実装できる。
***[[UWP]] [#t9f50834]
-[[Metro or Modern>#a0c50661]]の後継
-同様に、Windowsプラットフォームに限定される。

-連載:WPF入門:第1回 いよいよWPFの時代。WPFの習得を始めよう (1/3) - @IT~
http://www.atmarkit.co.jp/ait/articles/1005/14/news105.html
***[[Xamarin]] [#xc6401d3]
クロスプラットフォーム(スマホ・ネイティブ)

**UI部分とプログラム部分を分離して記述・実装 [#eb070dc4]
UI部分にXAML、プログラム部分にCLR言語と、UI・プログラム部分を分離して記述・実装できるので、Webアプリケーションと同様に画面デザイン(画面モックアップ開発)とプログラム開発の分業が可能である。例えば、UI開発ツールに特化したExpression Blendで、VSソリューション(プロジェクト)ファイルをそのまま開き、XAMLを直接作成・編集することもできる。
***[[Uno Platform]] [#o9a541d4]
クロスプラットフォーム(アプレットのような)

WPFにおける分離コードを実現するためには、従来のWindowsフォームや、ASP.NETアプリケーション(Webフォーム)と同様に、分離クラス(コードビハインド)と、.NET Framework 2.0からサポートされたパーシャル クラスが使用される。XAMLファイルから分離クラス(コードビハインド)ファイルを関連付けるためには、XAML上で「x:Class」、「x:Subclass」、「x:ClassModifier」などのディレクティブを定義する。なお、「x:Code」ディレクティブを定義すればXAML上にインラインでコードを実装することもできる。また、分離クラス(コードビハインド)ファイルから、XAMLファイルで生成したCLRオブジェクトにアクセスするには、「x:Name」ディレクティブ、または、Name属性を付与する必要がある。これらのディレクティブについては、「[[ディレクティブ>#cd4daa01]]」を参照のこと。
***[[OpenSilver>Silverlight#j784f31b]] [#n7c1761e]
-クロスプラットフォーム(アプレットのような)
-名前から解るように[[Silverlight>#xef889a0]]の後継。

-WPF における分離コードと XAML~
https://msdn.microsoft.com/ja-jp/library/aa970568.aspx
***[[.NET MAUI]] [#q1b37847]
頭痛くなってきた。

***WPFにおけるビルド アクション [#jba5609b]
中間生成物であるパーシャル クラスは、ビルド アクション = Pageに設定されている(WindowやPageの)XAMLから生成され、分離クラス(コードビハインド)と統合されてビルドされる。
**XAMLの書き方 [#a3e22e7c]
XAMLは、XMLをベースとしており、~
XAMLの各要素からCLRオブジェクトをインスタンス化し、~
「要素ツリー」を構築できる。

-WPF アプリケーション (WPF) のビルド~
http://msdn.microsoft.com/ja-jp/library/aa970678.aspx
ここでは、WPFのXAMLの書き方を通して、
-XAMLの基礎
-XAMLによるUI設計方法
-XAMLによるUI開発方法

***XAMLの記述方法 [#da73b2ff]
テキスト ベースの記述、デザイナを使用した記述が可能。
を説明する。

-Expression Blendを使用して
--テキスト ベースの記述(IntelliSenseを活用)
--デザイナを使用した記述
あまりに内容が多いので、2分割にしました。

>が可能。
***[[XAMLの書き方(1)]] [#d37643cd]
***[[XAMLの書き方(2)]] [#gcfca4e2]

-従来の[[Windows Forms]]と同様にVSを使用して、
--テキスト ベースの記述(IntelliSenseを活用)
--デザイナを使用した記述
**XAMLのサンプル [#t1544b9b]

>が可能 。
***WPFのサンプル [#n72def8e]
-SampleProgram/UISubsystem/WPF at master · OpenTouryoProject/SampleProgram~
https://github.com/OpenTouryoProject/SampleProgram/tree/master/UISubsystem/WPF

>通常は、VSを利用すればIDE機能としては事足りるが、Expression Blendでしかできない「[[デザイナ向け機能>#y6378ada]]」を使用する場合は、Expression Blendを使用する。
***... [#y81c2fd9]

***プログラムの実装方法 [#tfbe604f]
Windows上でのアプリケーション開発で有用なC#、VBなどの、標準的なプログラム言語を使用できるため開発要員を確保しやすい。また、WPF / Silverlightアプリケーション開発の双方で、フレームワークの基本的な構造については同じものを共用できる。このUIフレームワークを習得すれば、双方の開発が可能となる(ただし、双方の違いは理解しておく必要がある。「Silverlightについて」を参照)。
*参考 [#h7fea6b5]
-WPF は死んだのか?  Moonmile Solutions Blog~
http://www.moonmile.net/blog/archives/6156

**プログラム部分は、VB・C#を使用して実装 [#b338c3aa]
**@IT > Insider.NET [#ubdf4846]

*WPFについて [#u20856d5]
-XAMLの基礎知識~
http://www.atmarkit.co.jp/fdotnet/basics/xaml_index/index.html
--第1回 Hello Worldとテキスト・エディタで始めるXAML~
http://www.atmarkit.co.jp/fdotnet/basics/xaml01/xaml01_01.html 
--第2回 XAMLとWPFの関係~
http://www.atmarkit.co.jp/fdotnet/basics/xaml02/xaml02_01.html 

**WPFの機能 [#i739b5f5]
***サポートする機能 [#t4e8816f]
***機能の制限事項 [#na2d384b]
***注意事項 [#h510ff35]
**XAMLの基礎 [#s2db1c9f]

**WPFのアーキテクチャ [#j150ee22]
***クラス階層 [#d6c9e5d1]
***要素ツリー [#p05c4c4f]
***WPFプロパティ システム [#u00b87e5]
***データ バインディング [#dac6f2bf]
***ルーティング イベント [#m1474b2f]
***WPFのXAML [#g3aa77d9]
http://msdn.microsoft.com/ja-jp/library/ms747122.aspx

**WPFのコントロール [#zc4549e3]
***標準コントロール [#te4c8df4]
***ユーザ コントロール [#m9448a6a]
-XAMLの概要(WPF)~
http://msdn.microsoft.com/ja-jp/library/ms752059.aspx
-XAML構文の詳細~
http://msdn.microsoft.com/ja-jp/library/ms788723.aspx
-WPFにおける分離コードとXAML~
http://msdn.microsoft.com/ja-jp/library/aa970568.aspx
-WPFにおけるXAMLとカスタム クラス~
http://msdn.microsoft.com/ja-jp/library/ms753379.aspx
-マークアップ拡張機能とWPF XAML~
http://msdn.microsoft.com/ja-jp/library/ms747254.aspx
-XAML名前空間およびWPF XAMLの名前空間の割り当て~
http://msdn.microsoft.com/ja-jp/library/ms747086.aspx
-WPF XAML名前スコープ~
http://msdn.microsoft.com/ja-jp/library/ms746659.aspx
-インライン スタイルおよびテンプレート~
http://msdn.microsoft.com/ja-jp/library/ms788725.aspx
-XAMLでの空白の処理~
http://msdn.microsoft.com/ja-jp/library/ms788746.aspx
-TypeConvertersおよびXAML~
http://msdn.microsoft.com/ja-jp/library/aa970913.aspx
-XML文字エンティティとXAML~
http://msdn.microsoft.com/ja-jp/library/ms748250.aspx
-XAML名前空間(x:)言語機能~
http://msdn.microsoft.com/ja-jp/library/ms753327.aspx

*XBAPについて [#c964fcaa]
**セキュリティ [#v4049cb0]
**注意事項 [#rfd7c995]
--WPF XAML拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms753379.aspx
---バインディングのマークアップ拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms750413.aspx
---ColorConvertedBitmapのマークアップ拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms742565.aspx
---ComponentResourceKeyのマークアップ拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms753186.aspx
---DateTime XAML構文~
http://msdn.microsoft.com/ja-jp/library/dd631811.aspx
---DynamicResourceのマークアップ拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms748942.aspx
---RelativeSourceのマークアップ拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms743599.aspx
---StaticResourceのマークアップ拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms750950.aspx
---TemplateBindingのマークアップ拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms742882.aspx
---ThemeDictionaryのマークアップ拡張機能~
http://msdn.microsoft.com/ja-jp/library/ms752067.aspx
---PropertyPathのXAML構文~
http://msdn.microsoft.com/ja-jp/library/ms742451.aspx
---PresentationOptions:Freeze属性~
http://msdn.microsoft.com/ja-jp/library/aa970057.aspx

*Silverlightについて [#m890bbf8]
**機能 [#pf9c74f1]
**セキュリティ [#mc2c78c1]
--マークアップの互換性(mc:)言語機能~
http://msdn.microsoft.com/ja-jp/library/ms753379.aspx
---mc:Ignorable属性~
http://msdn.microsoft.com/ja-jp/library/ms742451.aspx
---mc:ProcessContent属性~
http://msdn.microsoft.com/ja-jp/library/aa348259.aspx

*XAMLの書き方 [#a3e22e7c]
**名前空間 [#t16cd178]
**言語機能 [#n6cf5f58]
***ディレクティブ [#cd4daa01]
***マークアップ拡張 [#hc49ac25]
**プロパティの設定方法 [#s1a3f3e9]
***プロパティ属性構文 [#q550d6b3]
***プロパティ要素構文 [#fa957fd3]
***型コンバータ [#ea68ba77]
**コンテンツ構文 [#v6b58154]
***Contentプロパティ [#p8c8ba55]
***Itemsプロパティ [#gb58344b]
 
**リソース [#ea30adb6]
***リソースの定義 [#l529fcbc]
***リソースの定義と参照 [#e615c6b1]
----
Tags: [[:.NET開発]], [[:UIサブシステム]], [[:WPF/Silverlight, XAML]]

**データ バインディング [#e915d7ec]
***データ バインディングの基礎 [#bbd76ce0]
***リソースとのデータ バインディング [#ac5a7f33]

**レイアウト [#s77734ce]
***レイアウトのプロパティ [#j27354fe]
***パネルの種類と使い方 [#v124ba4f]

**スタイルとテンプレート [#q002601b]
***スタイル [#fa989262]
***テンプレート [#bb58b780]

**トリガ [#bbe9b16b]
***プロパティ トリガ [#ce79c6df]
***データ トリガ [#i5478c0f]
***イベント トリガ [#mb5243c8]

*その他 [#a8b33d4f]
**ビルティング ブロック クラス [#y720ef3a]
***Applicationオブジェクト [#bbdb37e4]
***Window画面 [#v51c2bf3]
***ナビゲーション フレームワーク [#f6820b24]
***Win32ダイアログ [#i5cf4c80]

**入力支援 [#h12b43f1]
***メニュー・タスクバーとコマンド [#c6479c52]
***ツールチップ [#i36d28e8]
***IME制御 [#n5902de4]

**デザイナ向け機能 [#y6378ada]
***様々なシェイプ [#s897a95f]
***グラデーション [#rc7056eb]
***トランスフォーム処理 [#h9e7aefe]
***アニメーション [#d0b80558]

**MVVMデザイン パターン [#u05bda3c]
**バリデーション [#w1cd4016]
***単項目のバリデーション [#k0141195]
***一覧のバリデーション [#x358d4f2]
***フォーカス制御 [#we3801e7]
***注意事項 [#ae4315b1]

*略語一覧 [#pfc07c61]
|項番|略語|正式名称|h
|1|UI|User Interface|
|2|D&D|Drag and Drop|
|3|GDI|Graphics Device Interface|
|4|GPU|Graphics Processing Unit|
|5|JS|JavaScript|
|6|Ajax|Asynchronous JavaScript + XML|
|7|JSON|JavaScript Object Notation|
|8|REST|Representational State Transfer|
|9|POX|Plain Old XML|
|10|SEO|Search Engine Optimization|
|11|VS|Visual Studio|
|12|VB|Visual Basic|
|13|IE|Internet Explorer|
|14|WMV|Windows Media Video|
|15|WMA|Windows Media Audio|
|16|CLR|Common Language Runtime|
|17|DLR|Dynamic Language Runtime|
|18|CAS|Code Access Security|
|19|RCW|Runtime Callable Wrapper|
|20|WPF|Windows Presentation Foundation|
|21|WPF/E|Windows Presentation Foundation / Everywhere|
|22|XAML|eXtensible Application Markup Language|
|23|BAML|Binary Application Markup Language|
|24|XBAP|XAML Base Application|
|25|MVVM|Model - View - View Model|

*参考資料 [#k5788ffe]


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