すべてのコンバーターを参照するリソースディクショナリを作成しているので、個々のコンバーターを参照する必要はありません。私のコンバーターは別のアセンブリにあり、それらをインポートするには、次のようにします。
- 外部アセンブリへの参照を追加
- リソースディクショナリを作成する
- Convertersアセンブリを参照するxml名前空間を追加します
- 参照コンバーター
だから私の辞書は次のようになります:
<ResourceDictionary xmlns:Converters="clr-namespace:Client.Utilities.Converters;assembly=Client.Utilities">
<Converters:BoolToBrushConverter x:Key="boolToBrush"/>
</ResourceDictionary>
ただし、ビルドしようとすると、次の例外が発生します。
Error 18 The tag 'BoolToBrushConverter' does not exist in XML namespace 'clr-namespace:Client.Utilities.Converters;assembly=.Client.Utilities'. Line 12 Position 6. C:\Resources.Tests\Resources\ResourceDictionaries\Converters\ConvertersResources.xaml 12 6 Client.eZenith.Resources.Tests
なぜそれが起こっているのか考えはありますか?
注:インテリセンスから、すべてのコンバーターが入力後に候補リストに表示されるため、コンバーターアセンブリの名前空間は正しいようです。<Converter:
編集:VSとブレンドデザイナーはどちらも、コントロールプレビューをレンダリングするときにそのコンバーターを見つけることができます。
編集:私は、辞書がマージされることとは何の関係もないことを理解しました。Windowのリソースにコンバーターを追加するときにも同じ問題が発生します。