silverlight – 尝试使用ResourceDictionary,但其中的样式却没有找到

我有一个名为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 =与你的不同.

点赞