有人问这样的类似问题。有些人已经回答(但不是我的情况),其他人则没有。我有一个简单的Silverlight应用程序项目,第二个带有UserControl的Silverlight类库项目,以及带有一堆资源字典的第三个项目。项目结构如下所示:
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
中添加对Client.Login
的引用来解决此问题,但这会破坏分离ResourceLibraries的目的,对吧?
有没有人知道为什么资源字典作为辅助项目引用会引发这种类型的异常?或者如何解决此问题,而不提供根项目直接引用具有其中资源的库?