このような同様の質問がされています。回答されたものもあれば(私の場合ではありません)、回答されていないものもあります。シンプルな Silverlight アプリ プロジェクト、UserControl を含む 2 番目の Silverlight クラス ライブラリ プロジェクト、および多数のリソース ディクショナリを含む 3 番目のプロジェクトがあります。プロジェクト構造は次のようになります。
Silverlight アプリ プロジェクト:
Client.Login
- App.xaml
- MainPage.xaml
UserControl を使用した Silverlight ライブラリ プロジェクト:
Client.UX.Login
- Login.xaml <<- The user control
Client.UX.ResourceDictionaries
- Buttoms.xaml
- ComboBoxes.xaml
- etc...
Client.UX.Login
へのプロジェクト参照がClient.UX.ResourceDictionaries
あり、Login.xaml の UserControl 内に次のように必要に応じてこれらの辞書が含まれています。
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Client.UX.ResourceLibraries;component/Brushes.xaml" />
<ResourceDictionary Source="/Client.UX.ResourceLibraries;component/TextBoxes.xaml" />
<ResourceDictionary Source="/Client.UX.ResourceLibraries;component/PasswordBoxes.xaml" />
<ResourceDictionary Source="/Client.UX.ResourceLibraries;component/Buttons.xaml" />
<ResourceDictionary Source="/Client.UX.ResourceLibraries;component/ComboBoxes.xaml" />
<ResourceDictionary Source="/Client.UX.ResourceLibraries;component/RadioButtons.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
Client.Login
UserControl のライブラリのみを参照します: Client.UX.Login。
アプリを実行すると、上記の XAML の最初の ResourceDictionary マージで次のエラーが発生します。
Failed to assign to property 'System.Windows.ResourceDictionary.Source'.
内部例外はありますが、KeyNotFoundException
Brushes.xaml の唯一の XAML は非常に単純です。ボタン関連のスタイルをいくつか。
Client.UX.ResourceLibraries
inへの参照を追加することで問題を解決できますClient.Login
が、それでは ResourceLibraries を分離する目的が無効になりますよね?
二次プロジェクト参照としてのリソース ディクショナリがこの種の例外をスローする理由を知っている人はいますか? または、リソースを含むライブラリへの直接参照をルート プロジェクトに提供せずに、この問題を解決する方法を教えてください。