有人问过类似的问题。有些已经回答(但不是我的情况),有些则没有。我有一个简单的 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
我可以通过添加对in的引用来解决问题Client.Login
,但这违背了分离 ResourceLibraries 的目的,对吧?
有谁知道为什么资源字典作为辅助项目引用会抛出这种类型的异常?或者如何在不为根项目提供直接引用包含资源的库的情况下解决此问题?