我有一个名为 MyClassLibrary 的 Silverlight 类库。
在其中,我有一个名为 MyControl 的用户控件。
在控件中,我定义了用户资源:
<UserControl.Resources>
<Style x:Key="ComboBoxStyle" TargetType="ComboBox">
(lots of xaml)
</Style>
</UserControl.Resources>
该控件使用如下样式:
<ComboBox Style="{ StaticResource ComboBoxStyle }"></ComboBox>
这一切都很完美,ComboBox 提供了正确的样式,所以我知道样式写得正确。
我真正想要的是将样式放在资源字典中,以便该程序集中的多个不同控件可以使用它。所以我在同一个程序集中创建了一个资源字典。我称之为 ResourceDictionary.xaml。
我将样式定义从我的用户控件移动到资源字典。
那么资源字典看起来像这样:
<ResourceDictionary
xmlns="etc" >
<Style x:Key="ComboBoxStyle" TargetType="ComboBox">
(lots of xaml)
</Style>
</ResourceDictionary>
控件的用户资源现在如下所示:
<UserControl.Resources>
<ResourceDictionary
Source="/MyClassLibrary;component/ResourceDictionary.xaml" x:Name="resDict"/>
</UserControl.Resources>
并且控件仍然以与以前完全相同的方式使用样式。
现在我知道它正在查找 ResourceDictionary.xaml 文件,因为我尝试将“Source”属性更改为 NonExistentFile.xaml,但它抱怨找不到该文件。它不会对 ResourceDictionary.xaml 提出投诉,所以我认为它正在找到它。
但是,当我运行该应用程序时,我收到“找不到具有名称/键组合框样式的资源”的错误。
我究竟做错了什么?这看起来很简单,但它不起作用。
提前感谢您能给我的任何帮助。