Archive for 2007 年 8 月

[Blend]Canvas.xaml用テンプレートを追加する

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

[AIR]AIRのFile.applicationStorageDirectory

AIRで「File.applicationStorageDirectory」の保存場所をメモ。

 

Mac OS X:
Macintosh HD/Users/[ユーザー]/Library/Preferences/[AIRアプリID]/Local Store/

Windows XP:
C:¥Documents and Settings¥[ユーザー]¥Application Data¥[AIRアプリID]¥Local Store¥

※[AIRアプリID]部分はapp.xmlで設定する「appId」で指定した文字列。

 

例えば、以下のコードの場合、

//file
var aFile:File=File.applicationStorageDirectory;
aFile = aFile.resolve("StorageTest/test.txt");
//stream
var aStream:FileStream=new FileStream();
aStream.open(aFile,FileMode.WRITE);
aStream.writeUTFBytes("StorageTest");
aStream.close();

「test.txt」が作られる場所は、
「[AIRアプリID]/Local Store/StorageTest/test.txt」となる。

そして、AIRアプリのインストーラーの「More Options」からアンインストールしても、データはそのまま残っている。Windowsで「プログラムの追加と削除」からでも残っている。

 

ついでに「File.applicationResourceDirectory」の場合は、
開発中は「bin」の中にあって、AIRとしてインストールされると、

Mac OS X:
([ユーザー]/Applicationsとかの)AIRアプリケーションを右クリックして「パッケージの内容を表示」→ Contents/Resourcesの中。

Windows XP:
C:¥Documents and Settings¥[ユーザー]¥Local Settings¥Application Data¥[AIRアプリ名]の中。
(「File.applicationStorageDirectory」と違ってLocal Settingsの中)

こちらは当然ながらアンインストールで消去される。

 

Related posts

[Silverlight]SWF+Silverlight1.1のサンプル更新

この前、SWFからExternalInterfaceを経由して、Silverlight 1.1 のDLLを使用するサンプル作ってみましたが、Silverlight1.1 が Alpha Refresh版となったことで、Alpha Refresh用にサンプル・ソースを変更しました。

[Flash]SWFからSilverlight 1.1のDLLを使う
http://violentcoding.com/blog/2007/06/10/archives/8

 

変更といっても、Silverlight.js差し替えたり、
CreateSilverlight.jsの中で「 Sys.Silverlight.createObjectEx({source: ’simple.xaml’,・・・」となっている部分で、最初の「Sys.」を消すぐらいで済みました。その他はSilverlightのプロジェクト名を変えたのでネームスペースを調整しています。

 

Related posts