在另一个程序集中引用用户控件时,不会显示用户控件中引用的资源

时间:2010-09-10 17:04:57

标签: wpf image assemblies sharing

我有3个集会:

Number 1- ResourceAssembly,其中包含一个子文件夹中包含1个图像的图像(构建操作=资源)。在该子文件夹中有一个ResourceDictionary,其构建操作设置为resource。资源字典包含以下内容 -

<BitmapImage x:Key="BluePlus_48x48_72" UriSource="112_Plus_Blue_48x48_72.png"/>

Number 2 - 一个带有单个usercontrol的wpf控件程序集,名为UserControl1。在该usercontrol的资源中,我从程序集1加载资源字典并使用其中的图像。

<ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/ResourcesAssembly;component/Images/ImagesDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

<Image Source="{DynamicResource BluePlus_48x48_72}" Height="48" Width="48"/>

图像显示正确。

Number 3 - 主应用程序集。在MainWindow.xaml中,我引用Project1程序集并插入UserControl1。

xmlns:p1="clr-namespace:Project1;assembly=Project1"
<p1:UserControl1 Height="60" Width="60"/>

但是,图像不会出现。在运行时,没有编译时错误,也没有任何错误输出到“输出”窗口。我不知道为什么图像没有出现。有什么想法吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我认为您还需要在主应用程序中添加对“ResourceAssembly”项目的引用。或者至少将“ResourceAssembly.dll”与主应用程序的可执行文件放在同一个文件夹中。

答案 1 :(得分:0)

尝试提供如下所示的资源参考。

<ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/YourAssembly.Name;component/Images/ImagesDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

<Image Source="{StaticResource BluePlus_48x48_72}" Height="48" Width="48"/>

注意:另外,请勿忘记Source="/中的/。

HTH