LoginSignup
22
16

More than 5 years have passed since last update.

WPF XAMLで別アセンブリのCLR名前空間を宣言する。

Last updated at Posted at 2014-04-24

ちょっと戸惑ったのでメモ

MyLib.dll内で宣言されたMyLibというCLR名前空間をXAML名前空間として宣言しようと、MyLib.dllをプロジェクトの参照設定に追加した後、同一アセンブリ内のCLR名前空間と同じように以下のようにXAMLに記述した。

xmlns:mylib="clr-namespace:MyLib"

で、mylib.dll中で定義されたクラスMyClassをスタティックリソースとして使用しようと

<Window.Resources>
  <mylib:MyClass x:Key="MyClass"/>
</Window.Resources>

などとしたら、名前空間MyLibにはMyClassが存在しないと怒られた。

MyLib.dllには間違いなくpublicなクラスとしてMyClassは存在するのでおかしいと思ったら、XAML名前空間の宣言に問題があった。

参照設定に追加してるから違いはないだろうと思い込んでいたら、キチンとアセンブリを明示してやる必要があるとのこと。具体的にはxmlnsで名前空間を宣言するさいに、assemblyを用いてアセンブリ名を指定すればよい。

<!-- MyLib.dll 内で宣言された名前空間MyLibを宣言する。 -->
xmlns:mylib="clr-namespace:MyLib;assembly=MyLib"

これで別アセンブリに定義されたクラスをXAML内で参照できるようになった。

22
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
16