2

私のプロジェクトには、一連のWPFコントロールを定義するアセンブリがあります。XAMLコードでアセンブリを明示的に参照せずにそれらを使用できるようにしたいと思います。これが、カスタムXmlnsDefinitionを使用している理由です。

[assembly: XmlnsDefinition(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation",
    "MyProject.Common.WpfLibrary.Markup")]
[assembly: XmlnsDefinition(
    "http://schemas.microsoft.com/winfx/2007/xaml/presentation",
    "MyProject.Common.WpfLibrary.Markup")]
[assembly: XmlnsDefinition(
    "http://schemas.microsoft.com/winfx/2008/xaml/presentation",
    "MyProject.Common.WpfLibrary.Markup")]

VS2008ではチャームのように機能します。Markup名前空間で定義されたコントロールを直接使用できます。ただし、Blendはそれを気に入らないようで、コントロールを使用しようとすると「無効なXAML」エラーが発生します。

回避策はありますか?

4

1 に答える 1

1

XmlnsDefinitionAttribute は、アセンブリ内の CLR 名前空間ごとに 1 回だけ使用する必要があります。2 番目と 3 番目の割り当てには XmlnsCompatibleWithAttribute を使用します。

于 2010-01-11T16:12:34.360 に答える