外部类库中的图像和控制

时间:2011-11-24 00:21:17

标签: wpf image xaml

所以我有一个应用程序和一个类库。

类库有

UserControls/Test.xaml
Images/TestImage.png

测试图像标记为“内容”,“复制到输出目录”设置为false,因为我希望所有图像都存储在类dll中。

Test.xaml看起来像这样......

<UserControl x:Class="TestLib.UserControls.Test"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         >
         <Image Source="/TestLib;component/Images/TestImage.png"/>
</UserControl>

设计器工作正常,但是当我尝试在我的应用程序中实例化UserControl / Test.xaml时,它会抛出以下异常:

System.IO.IOException occurred
Message=Cannot locate resource 'images/TestImage.png'.
Source=PresentationFramework
StackTrace:
   at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access)
InnerException: 

我尝试将资源类型更改为“资源”和“嵌入式资源”,但两者都没有任何区别。我也尝试使用完整包字符串

"pack://application,,,/TestLib;component/Images/TestImage.png" 

但它会引发完全相同的异常甚至声明相同的'images / TestImage.png'。

编辑:我忘了提到Images / TestImage.png没有“包含”它被“包含为链接”。显然这是因为编译错误导致的问题:Linked Files within a Folder Structure

2 个答案:

答案 0 :(得分:1)

最后一个URI应该与'Resource'构建操作一起使用。尝试使用this answer中的代码。

答案 1 :(得分:0)

看起来解决方案是在库中不使用“链接”而不是“包含”资源。编译器无法遵循它们的路径,这使得在类库中使用它们时无法引用它们。请参阅:Linked Files within a Folder Structure

即使链接文件存在于项目的根目录中,您仍然无法在运行时引用它。