我有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"/>
但是,图像不会出现。在运行时,没有编译时错误,也没有任何错误输出到“输出”窗口。我不知道为什么图像没有出现。有什么想法吗?
感谢您的帮助!
答案 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