Skip to content

MS_WPFSilverlight

nishi_74322014 edited this page Aug 21, 2026 · 2 revisions

WPF/Silverlight

概要

  • WPFは、.NET Framework 3.0 で新しく提供され、
    Windows Vista で全面的に採用された、
    リッチでインタラクティブな UI アプリケーションを開発・実行するための
    UI サブシステム

    (クラス ライブラリ・UI コントロールのセットを含むランタイム・フレームワーク)。

  • Windows Vista の UI サブシステムには WPF が全面的に採用されており、
    今後の Windows の UI アプリケーション開発の標準技術として利用できる。

移行メモ(時点の注意): 本ページは Windows Vista / .NET 3.5 時代
記述である。「今後の標準技術」という位置づけは当時のもので、
実際には Windows Forms が広く残り続けた。
現在の全体像はデスクトップ・アプリを参照。

WPF / Silverlightは、XAML based UI とも呼ばれ、
XAMLというマークアップ言語によってデザインされる。

Windows プラットフォームに限定される。

クロスプラットフォーム(アプレットのような)

特徴

WPF / Silverlight は、高速なグラフィックスではなく、

  • メディア リッチ:音声・動画の組み合わせ
  • インタラクティビティー:画像や音声などによって示される内容に応答する操作性

を実現する UI サブシステムであるため、

  • Direct3D
  • DirectShow
  • Media Foundation

などを使用して開発する 3D ゲームや高品質なビデオ再生アプリの開発には
向かないが、業務アプリケーション開発に必要な標準コントロールを備えており、
従来の業務アプリケーションにリッチでインタラクティブな効果を追加可能。

開発環境

  • WPF / Silverlight は、Visual Studio 2008 以降や、
    Expression Blend を使用して開発が可能。

  • Expression Blend はデザイナ向けツールであり、
    Visual Studioに無い以下の機能を有している。

    • GUI を使用した図形オブジェクトの作成・編集
    • GUI を使用したグラデーションの作成・編集
    • GUI を使用したアニメーションの作成・編集

移行メモ(最新化): Expression Blend という製品は現存しない
Expression Studio は 2012年に事実上終息し、
Blend の機能は Visual Studio に「Blend for Visual Studio」として統合された
(Visual Studio のワークロードに含まれる)。
現在は Visual Studio 単体で本節の作業ができる。

実行環境

WPF は、.NET Framework 3.0 以上でサポートされており、
Windows XP でも動作可能である。
ただし、Windows XP は、Windows Vista とディスプレイ ドライバ モデルが
異なるため、条件によっては、GPU によるハードウェア レンダリングが使用できず、
ソフトウェア レンダリングになることで CPU への負荷が増えたり、
見え方が若干変わったりする場合もある。

WPF / Silverlight の OS 要件

項番 OS WPF 3.0 WPF 3.5 WPF 4.0 Silverlight 3 Silverlight 4
1 Windows 7
2 Windows Server 2008 R2
3 Windows Vista
4 Windows Server 2008
5 Windows XP
6 Windows Server 2003
7 Windows 2000 (SP4)
8 Mac OS X 10.4.11 以上(Intel ベース)

補足(現在の実行環境): 上記の表は歴史資料として残す。
現在の WPF

  • .NET Framework 4.8(Windows 同梱)または
  • .NET Core 3.0 以降 / .NET 8net8.0-windows TFM)

の 2 系統で動作する。いずれも Windows 専用である点は変わらない。

開発方法

WPF / Silverlight アプリケーションの開発には以下のような特徴がある。

  • WPF / Silverlight では、P 層の UI 部分を
    (HTML のような XML ベースのマークアップ言語である)XAML
    Visual Studio・Expression Blend などのツールを使用して記述し、
    イベントなどのプログラム部分は C#VBを使用して開発する
    (Silverlight 1.0 は JavaScript のみ対応)。
    UI 部分とプログラム部分を分離して記述・実装できる。

  • ASP.NETアプリケーション(Web フォーム)の
    HTML + ASP タグのように、マークアップ言語である XAMLから、
    UI 要素が生成され、分離クラス(コードビハインド)にイベント処理などの
    業務処理を実装するという、従来からのイベント・ドリブン、
    UI コンポーネントベースのプログラミング・モデルを継承する UI テクノロジ。

また、XAMLは、XML をベースとしており
各要素からツリー構造の CLR オブジェクトをインスタンス化できる。
このため、XAML は、
「ツリー構造の CLR オブジェクトをインスタンス化するためのマークアップ言語」と
説明することも可能である。

UI部分とプログラム部分を分離して記述・実装

UI 部分に XAML、プログラム部分に CLR 言語と、
UI・プログラム部分を分離して記述・実装できるので、
Web アプリケーションと同様に画面デザイン(画面モックアップ開発)と
プログラム開発の分業が可能である。

WPF における分離コードを実現するためには、従来の
Windows フォームや、
ASP.NETアプリケーション(Web フォーム)と同様に、
分離クラス(コードビハインド)と、
.NET Framework 2.0 からサポートされたパーシャル クラスが使用される。

XAML ファイルから分離クラス(コードビハインド)ファイルを関連付けるためには、
XAML 上で x:Classx:Subclassx:ClassModifier などの
ディレクティブを定義する。

  • x:Code ディレクティブを定義すれば XAML 上にインラインでコードを実装できる。
  • 分離クラスから XAML で生成した CLR オブジェクトにアクセスするには、
    x:Name ディレクティブ、または Name 属性を付与する必要がある。

補足(分業は実際には難しかった): 「デザイナとプログラマの分業」は
WPF の売り文句だったが、実務では期待どおりに機能しなかった。

前提 実際
デザイナが Blend で XAML を書く デザイナは Photoshop / Figma を使い、XAML は書かない
XAML とコードが疎結合 Binding のパス指定などで結局密に絡む
分業できる MVVM を理解した開発者が両方書くのが実情

同じ「分業できる」という触れ込みは ASP.NET Web Formsにもあったが、
結果は同様であった。
ただし UI とロジックが分離されること自体の価値
(単体テストのしやすさ)は損なわれていない。

WPFにおけるビルド アクション

中間生成物であるパーシャル クラスは、
ビルド アクション = Page に設定されている(WindowPage の)XAML から
生成され、分離クラス(コードビハインド)と統合されてビルドされる。

プログラム部分は、VB・C#を使用して実装

XAMLの記述方法

テキスト ベースの記述、デザイナを使用した記述が可能。

  • Expression Blend / Visual Studio のいずれでも

    • テキスト ベースの記述(IntelliSense を活用)
    • デザイナを使用した記述

    が可能。

プログラムの実装方法

WPF / Silverlight アプリケーション開発は、C#VBなどの、
標準的なプログラム言語を使用できるため開発要員を確保しやすい。

また、WPF / Silverlight の双方で、ランタイムは異なるものの
UI サブシステムのフレームワークの基本的な構造については同じものを共用できる。
この UI サブシステムのフレームワークを習得すれば、双方の開発が可能となる
(ただし、双方の違いは理解しておく必要がある。
Silverlight」を参照)。

ただし、高度な処理を実装する場合や、トラブルシュートを行う場合は、
UI サブシステムのフレームワーク、XAMLの読み方・書き方を
ある程度は知っておく必要がある。
しかし、これらの仕様は大きく、複雑で把握するのに時間がかかる。
この点に関して、WPF / Silverlight アプリケーションの開発は、
敷居が高いと言える。

国際化対応

WPFの場合

Silverlightの場合

  • リソース(.resx)によるロケール別リソースの読み込みが基本となる。

参考


Tags: 移行, .NET開発, UIサブシステム, WPF/Silverlight, XAML, 国際化対応

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally