かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

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