我们有一个控制库,我们在主应用程序中引用它。在其中,我们决定将Generic.xaml拆分为特定于类型的资源,例如Brushes.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"但无济于事。我错过了什么?
注意:如果资源与应用程序位于同一个程序集中,它似乎有效。这似乎只与将资源分成类库有关。
答案 0 :(得分:0)
找到它。 Generic.xaml具有特殊规则,您拥有以使用完全限定的源。这工作......
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ControlLibrary;component/Themes/Brushes.xaml" />
</ResourceDictionary.MergedDictionaries>