🐇

xamlで参照するカスタムクラスのnamespaceが変わる場合は必ずassemblyを記述しましょう(備忘録)

2025/02/06に公開

XAMLでカスタムクラスを使うときの「assembly」属性の大事さについて、ざっくりと説明しています。普段、同じプロジェクト内のクラスなら名前空間だけで大丈夫だけど、もしそのクラスが別のアセンブリにある場合は、「assembly」属性を必ず書かないと、XAMLパーサーがそのクラスを探せなくなりがち。

たとえば、

xmlns:controler="clr-namespace:Sample.Controler;assembly=Sample"

これは、SampleというアセンブリにあるSample.Controlerという名前空間のクラスを使いたい場合の指定方法。一方で、同じアセンブリ内ならこんな風に書くだけでOK:

xmlns:controler="clr-namespace:Sample.Controler"

まとめると、XAMLでカスタムクラスを参照するときに、そのクラスが別のアセンブリにある場合は、名前空間と一緒にどのアセンブリに定義されているかを明示する必要がある、ということ。これをしっかり守れば、XAML側で正しくクラスが認識されて、アプリケーションも期待通りに動いてくれる。

Discussion