我有一个名为MyClassLibrary的Silverlight类库.
在其中,我有一个名为MyControl的用户控件.
在控件中我定义用户资源:
<UserControl.Resources>
<Style x:Key="ComboBoxStyle" TargetType="ComboBox">
(lots of xaml)
</Style>
</UserControl.Resources>
控件使用如下样式:
<ComboBox Style="{ StaticResource ComboBoxStyle }"></ComboBox>
这一切都很完美,ComboBox提供了正确的风格,所以我知道风格写得正确.
我真正想要的是将样式放在资源字典中,以便它可以被此程序集中的几个不同控件使用.所以我在SAME程序集中创建了一个资源字典.我称之为ResourceDictionary.xaml.
我将Style定义从我的用户控件移动到资源字典.
那么资源字典看起来像这样:
<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进行投诉,因此我认为它正在找到它.
但是,当我运行该应用程序时,出现“无法找到具有名称/键ComboBoxStyle的资源”的错误.
我究竟做错了什么?这看起来很简单,而且不起作用.
在此先感谢您提供给我的任何帮助.
最佳答案 不确定这是否有帮助,但我在App.xaml中包含了我的ResourceDictionaries:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Sausage/Bangers.xaml"/>
<ResourceDictionary>
.. other stuff, e.g.
<helpers:NotOperatorValueConverter x:Key="NotOperatorValueConverter" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
即使你不喜欢这种方法,你也可以看到我的Source =与你的不同.