かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

WinRTでのXAMLの名前空間の定義

この内容は、Windows 8 CPにもどついて記載しています。正式版とは異なる可能性があります。

WPF, Silverlightではclr-namespace:名前空間;assembly=アセンブリ名でした(MSDNの該当記載箇所)がWinRTのXAMLでは変わっていました。Visual Studioのデザイナ上ではエラーにならずに実行時に例外という嫌な感じではまってしまったのでメモします。
Porting Silverlight or WPF XAML/code to a Metro style appに記載がありました。

Instead of using a clr-namespace:/assembly= qualifier set for code-to-XAML namespace references, 
you only use the using: qualifier. XAML namespaces no longer reference specific assemblies; 
all assembly qualification and inclusion is handled by the application model and project system.

ということで今までSampleAppというアセンブリのSampleApp.ViewModels名前空間に対応するXML名前空間の定義は以下のように変わります。

<!-- 旧式 -->
xmlns:vm="clr-namespace=SampleApp.ViewModels;assembly=SampleApp"
<!-- WinRT -->
xmlns:vm="using:SampleApp.ViewModels

記述的にはすっきりしてていいですね!しかも、どのアセンブリの型かは面倒見てくれる。痺れる。