Expression Blendで[ファイル]メニュー – [新しいアイテムの追加]に、パーシャルクラスを持たないXAMLのみの「Canvas」を追加する方法です。

Canvas.xamlを生成するテンプレート定義を作って、テンプレート用ディレクトリに配置すれば、[新しいアイテムの追加]ダイアログに「Canvas」が追加されます。

Blend1_addNewItem_Canvas

 

Blendのテンプレート用ディレクトリは、
C:\Program Files\Microsoft Expression\Blend 1.0\Templates\ja\が基本で、さらにその中に言語別の「CSharp」「VisualBasic」というフォルダがあります。

で、それぞれのフォルダに配置されたテンプレート定義が使用言語プロジェクトの「新しいアイテムの追加」ダイアログで表示されるテンプレートとなります。

 

テンプレート定義の内訳は、以下の3つです。

  • Canvas.vstemplate
  • Canvas.xaml
  • Canvas.png

Canvas.vstemplateが定義ファイルで、Canvas.xamlは追加されるファイル、Canvas.pngはダイアログで表示されるアイコン用です。

 

ダウンロード:
Blend1.0用Canvasテンプレート定義:CanvasTemplate_blend.zip
解凍した「Canvas」フォルダを使用する言語用フォルダ内に置いてください。

パーシャルクラスのコードを必要としない今回のCanvas.xamlでは、C#・VBを区別する必要が無いので、ResourceDictionaryのテンプレート定義と同じように「ja」直下の
C:\Program Files\Microsoft Expression\Blend 1.0\Templates\ja\に3つのファイルを直接配置してもOKです。

 

「.vstemplate」ファイルでいろいろ設定するんですが、<ProjectItem>タグのSubTypeが”form”の場合、ダイアログの「コードファイルを含める」チェックボックス部分が有効になるので、その部分をグレーアウトするために、ResourceDictionaryにならってSubTypeは「Canvas」としておきました。

<ProjectItem TargetFileName="$fileinputname$.xaml" ReplaceParameters="true" SubType="Canvas">Canvas.xaml</ProjectItem>

 

あんまりWPFアプリケーション作成の場合に使い道は無いですが、Silverlight用のプロジェクトが作成できるBlend2を使う場合には、そこそこメリットがあるかもしれません。


ということで、Silverlight 1.1を作成できるBlend2では、パーシャルクラスを必要としないCanvas.xamlを使用することもあり、そんな場合の単独Canvas.xamlファイルを作成したいときに使えます。

 

Silverlight 1.1用プロジェクトの場合、UserControlの追加でもCanvasのXAMLファイルが作成されるんですが、VBやC#のコードも作成されるので、CanvasのXAMLを単独で使用したい時には、それらを削除する必要があります。

この時、Canvas用テンプレートを用意すれば、VBやC#のコードを削除する手間が省けます。

 

はい。ただそれだけです。

 

Blend2 August Previewにテンプレートを追加するには、
まず、C:\Program Files\Microsoft Expression\Blend 2 August Preview\Templatesに「en」の内容をコピーした「ja」フォルダを作成する必要があります。

そしてBlend 1の場合と同じように「ja」直下に「CSharp」「VisualBasic」というフォルダがあります。ちなみに「HTML」というフォルダはSilverlight 1.0用ですね。

 

ダウンロード:
Blend2 August Preview用Canvasテンプレート定義:CanvasTemplate_blend2.zip
解凍した「Canvas」フォルダを使用する言語用フォルダ内に置いてください。

 

「CSharp」とか「VisualBasic」にテンプレート用ファイルを配置するか、「ja」直下に直接ファイルを置くかすれば「新しいアイテムの追加」ダイアログに追加されます。

Blend2 AddItemDialog Orcas

 

Blend2 August PreviewではWPFアプリケーション用のプロジェクトの他に、Silverlight 1.1 用に2種類のプロジェクト(Visuau Studio 2005用とVisual Studio 2008 Beta(Orcas)用)があるので、Silverlight用に2つのテンプレート定義を追加します。

  • Canvas.vstemplate :WPF用テンプレート定義
  • Canvas.xaml :WPF用Canvas.xaml
  • Canvas_Silverlight2005.vstemplate :Silverlight 1.1(.NET)用テンプレート定義
  • Canvas_Silverlight.vstemplate :Silverlight 1.1(.NET Orcas)用テンプレート定義
  • Canvas_Silverlight.xaml :Silverlight用Canvas.xaml
  • Canvas.png :ダイアログ用アイコン

 

Silverlight用のテンプレート定義では「.vstemplate」内で、
Silverlight(.NET Orcas)用に<templategroupid>を「Silverlight」と指定し、

    <templategroupid>Silverlight</templategroupid>

Silverlight(.NET)のVisual Studio 2005用では「Silverlight2005」とすれば良いみたいです。

    <templategroupid>Silverlight2005</templategroupid>

 

WPF用とSilverlight用でCanvas.xamlが別なのはXAMLのネームスペースが異なるからです。

WPFアプリケーション用:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Sliverlight用:

xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

 

Related posts