合并资源字典无法分配给属性

时间:2013-10-28 19:37:37

标签: c# silverlight xaml dictionary resourcedictionary

有人问这样的类似问题。有些人已经回答(但不是我的情况),其他人则没有。我有一个简单的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的目的,对吧?

有没有人知道为什么资源字典作为辅助项目引用会引发这种类型的异常?或者如何解决此问题,而不提供根项目直接引用具有其中资源的库?

0 个答案:

没有答案