« [P5]先にVista をインストールし、後から、XP(以前のバージョンのWindows)をインストールして、デュアルブートにする方法 | トップページ | [P8]WPF 体制下において、ImeMode を切り替える方法 »

[P7]クラスライブラリ(DLL)作成にあたって、XAMLを使う方法(Visual Studio 2008 IDE)

いずれ当たり前のことになるのでしょうが、Visual Studio 2008 IDE で、『新規プロジェクト』のクラスライブラリのテンプレートを使って DLL を作成しようとした場合、WPF アプリケーションのようにデザイナーが表示されず、『一瞬 XAML を使うにはどうしたらいいのか』が問題になります。

この問題は、かなり危うい要素を含んでおります。

以下のようにすれば、一応使えるようにはなります。
(C# の例で記述します。VB の場合は、.cs を .vb に置き換えて下さい。)

① まず準備段階として、テンプレートからWPF アプリケーションのテンプレートで
  新規プロジェクトを作成し、ここでデザイナーを使ってXAMLファイルを作ってしま
  います。

② 出来上がったXAML関係ファイル(***.xaml と ***.xaml.cs)を、クラスライブラリ
  (DLL)のプロジェクトの該当フォルダーにコピーする。

     コピー後、ファイル名を変更したり(.xaml と .xaml.cs は、その前の部分を
  同名にしておくこと)、テキストエディターで内容を整えておけば、後の作業が
  円滑になります。

③ クラスライブラリ(DLL)のプロジェクトを立ち上げたIDEのソルーション・イックス
  プローラから、『 既存 Item の追加 』 として ***.xaml のみをプロジェクトに
  取り込みます(***.xaml.cs の方は、それにともなって自動的に取り込まれる)。
   
    [ 注意 ]
              『 既存 Item の追加 』 として取り込もうとすると、
           デフォルト(既定)では、***.xaml.cs だけしか表示されませんので、
           右にあるコンボボックスで、表示ファイルの拡張子を選び直してから、
           ***.xaml を選択し、取り込むこと。
  
  (一旦、XAML ファイルが取り込まれれば、デザイナーが表示されます。)

④ 必要に応じ、***.xaml と ***.xaml.cs のコーディングを手作業で修正して、
  クラスライブラリ(DLL)のプロジェクト全体と調和させる。

[要注意事項]

  以上で、一応 XAML を使って、DLL を構築することができるかに見えます。
 しかし、私が実験した限りでは、この方法は機能的に色々な限界に直面することになると思われます。限界に直面するから、使用の仕方を制限すると、そもそもライブラリに置いて使おうという目的が達成されず、たいへん中途半端な結果に終わります。
私が見極めた限りでは、XAMLをクラスライブラリ構築に際して使うということは、実際上全く有効性・有用性がない、と思われます。


 他方、WPFでは、XAMLの再利用方法として、リソースという仕組みが用意されて
 います。
従って、Microsoft としては、クラスライブラリ作成時にXAMLを使うということは問題にしていないように見受けられます。翻って考えてみれば、XAMLは、デザイナーのために用意された仕組みであって、それをプログラマーがDLLの構築に使おうというのは、
確かに筋が違います。

  なお、本稿を書いた時点では、私は『軽く』XAMLを使っていくという方針でしたが、
 その後XAML離れがさらに進み、[P13] に書いていますように、一切を言語コードで
 書き上げる方針に転換致しました。

 従って、この問題を最終的には見極めておりません。
 但し、その背景には、クラスライブラリ作成にXAMLを使うことにはかなり限界があるということが、一つの要因になっているということを付け加えておきます。

[追加事項]

 最初の時点では、一瞬XAML を DLL の構築のために使えないか、という発想が浮かぶのですが、XAML は根本的に DLL にはなじまない性格を持っています。
 DLL は、何らかの意味で Application 内にある共通の要素を 『抽象化して』 取り出し、再利用を図るものです。
  ところが、XAML には、この抽象化の要素が全く欠けております。どこまでも 『具体的な数値などのデータのまま』 であります。例えば、早い話、変数が使えません。

その意味で、そもそも、XAML と DLL は、性格的になじまないものであって
、Microsoft が予定するリソースという仕組みを使って XAML の再利用をはかるとしても、それは DLL を用いたものとは性格が異なり、具体性という枠から脱却できないものとして、柔軟性や動的性格に欠けたものに過ぎないのだと思われます。

 極論過ぎるかもしれませんが、私の出した結論は
XAMLはデザイナーが使うべき道具であって、プログラマーが使うべき道具ではないということになります。
ちなみに、先に述べました私の「P13」での、一切を言語コードで書き上げるという基本方針は
、《私のプログラミング環境下での》この見極めから出てきたものです。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
目次に戻る ・・・・ 左欄のカテゴリー 【パソコンの窓】 をクリック
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

|

« [P5]先にVista をインストールし、後から、XP(以前のバージョンのWindows)をインストールして、デュアルブートにする方法 | トップページ | [P8]WPF 体制下において、ImeMode を切り替える方法 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« [P5]先にVista をインストールし、後から、XP(以前のバージョンのWindows)をインストールして、デュアルブートにする方法 | トップページ | [P8]WPF 体制下において、ImeMode を切り替える方法 »