ページ

2009年4月30日木曜日

[WPF][Silverlihgt] プリプロセッサを使って SL と WPF の XAML の非互換部分をどうにかする

Silverlight の XAML と WPF のそれはよく似てるんですが非互換部分も結構あります。
それを VC++ のプリプロセッサを使って何とかしてしまうと言う方法が
Using the preprocessor to share incompatible XAML between SL and WPF ? Part 1
で紹介されています。

何とかすると言っても、使うのはプリプロセッサですから、XAML 上に

<TextBlock
#if SILVERLIGHT
Text="This is in Silverlight"
#else
Text="This is in WPF"
#endif
/>

というように書いておくってことです。
もちろん、標準では #if なんて対応していませんから、ビルド時にプリプロセッサを呼び出すように PreprocessXaml.targets ファイルを用意しておき、これを自分の csproj ファイルに追記してやるという方法です。

紹介されているのは以上なんですが、#if を書きこんだ XAML ファイルをそのままでは Blend で読み込めないとかいろいろと制限も出て来そうですね。
記事のタイトルに “Part 1” と付いてるので、今後も続くのかな?


0 件のコメント:

コメントを投稿