Skinned Application Sample

アプリケーションのスキンを変更するサンプルです。
System.Windows.ResourceDictionaryにApplicaton.LoadComponent()メソッドを使って読み込み、それをApplication.Property[]に代入するといった仕組みになっています。

まあ、Staticでグローバルな変数にがっさりスキンを代入しちゃうのは個人的にはあまり気に入らないですが、そのあたりの実装は自分で書きかえればいいのかもしれないんですけどね。

Simple Add-In has Multiple UI Sample

このサンプルは、Design by Contractによりホスト-アドイン間の中間レイヤーを設ける実装サンプルです。

Contractのインターフェースを定義し、ホスト側とアドイン側のアダプタに実装を行い、それぞれのViewとの関連付けを行うといった仕組みになっています。

実際にアドインを実装する際のスニペットとして登録しておくと便利かもしれません。

フロードキュメントと固定ドキュメント

Windowクラスなり、NavigationWindowにGUIをレイアウトする際にフレームやページといったクラスをコンテナとすることができます。

それらのGUIコントロールを要素として格納するコンテナとしてドキュメントクラスを利用することができます。

ドキュメントクラスには、それらの要素を構造として保存することができ、その用途によってフロードキュメントと固定ドキュメントが用意されています。

フロードキュメントとは、ウェブブラウザのように表示デバイスに応じてドキュメントの構造を維持しつつ、リキッドレイアウトするようなドキュメントのことを指します。

一方、固定ドキュメントはDTPソフトのように表示デバイスに依存せず、どんな環境で表示しても同一に見えるようなドキュメントを指します。

これらのドキュメントはXPS(XML Parser Specification)に準拠したファイルフォーマット・文書構造を採用することで、Windowsのコントロールや書式指定された文字列、あるいは画像やムービー、URIなどの要素を埋め込んだ文書を読み書きすることができるとともに、非常に高度なビューアーコントロールも用意されています。

また、XPSをベースとして拡張を行い、独自の文書フォーマットを作成することができます。

同様な基盤技術のもとに開発されたのがいわゆるOffice 2007のOpen XML Formatとなります。

散策のための前準備

Windows SDK for Windows Server 2008をあらかじめインストールしておきます。
インストールディレクトリの下にサンプルが展開されます。

デフォルトで展開されるのは古いサンプルなので、WPFのサンプルを展開します。

C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\WPFSamples.zip

F#とVisual Studio 2008/WPF

まず、F# 1.9.4.19がリリースされていたので、アップデートしました。

[プログラミング][F#][WPF][.NET] F#アドインのVisual Studio 2008への組み込み

Visual Studio 2008にF#のアドインを組み込むには、[ツール]-[アドインマネージャ]からF#のアドインを組み込みます。

[プログラミング][F#][WPF][.NET] F#でWPF

こちらのページにF#からWPFを動かすサンプルがあります。

Bending the Cat: F# meets WPF 3D

まあ、細かいところはxaml+C#で組んでもいいのかもしれませんが、xaml+F#で並行処理やメタプログラミングするのも粋なんじゃないかと思っております。
もうすこし、IronPython2.0のDLRまわりのコードが整備されてC#との相互運用がすすめばIronPython+xamlというのも面白いと思うのですが、ガリガリとアプリケーションを書くには、まだ環境が十分整備されていないかなぁと個人的には思っております。