为什么这个MergedDictionary条目导致异常?

时间:2015-05-23 07:04:27

标签: wpf resources mergeddictionaries

我们有一个控制库,我们在主应用程序中引用它。在其中,我们决定将Generic.xaml拆分为特定于类型的资源,例如Br​​ushes.xaml,Colors.xaml等,然后我们将它们简单地合并到Generic.xaml中。我们在Themes目录中将它们创建为Generic.xaml的兄弟姐妹,我们理解你应该相对地在本地引用它们,就像这样......

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Brushes.xaml" />
</ResourceDictionary.MergedDictionaries>

这是Class Library的AssemblyInfo.cs中的属性

[assembly:ThemeInfo(
    // Where theme specific resource dictionaries are located
    // (used if a resource is not found in the page, or application resource dictionaries)
    ResourceDictionaryLocation.None,

    // Where the generic resource dictionary is located
    // (used if a resource is not found in the page, app, or any theme specific resource dictionaries)
    ResourceDictionaryLocation.SourceAssembly
)]

...但它引发了以下异常......

{"Cannot locate resource 'brushes.xaml'."}

(注意例外情况也是小写。奇怪。)

现在我已经尝试了#34; Brushes.xaml&#34;,&#34; Themes / Brushes.xaml&#34;和&#34; /Themes/Brushes.xaml"但无济于事。我错过了什么?

注意:如果资源与应用程序位于同一个程序集中,它似乎有效。这似乎只与将资源分成类库有关。

1 个答案:

答案 0 :(得分:0)

找到它。 Generic.xaml具有特殊规则,您拥有以使用完全限定的源。这工作......

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/ControlLibrary;component/Themes/Brushes.xaml" />
</ResourceDictionary.MergedDictionaries>