かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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

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