【发布时间】:2011-10-14 18:48:12
【问题描述】:
我的问题是:我读错了 MSDN 还是 MSDN 错了?我试图通过相对 URI 引用图像资源。
标题为 Pack URIs in WPF 的 MSDN 页面明确指出:
"本地程序集子文件夹中的资源文件" = "/Subfolder/ResourceFile.xaml"
在表 2:标记中的相对 URI(这里 http://msdn.microsoft.com/en-gb/library/aa970069.aspx)。
所以,我在 Vs2010 (v10.0.40219.1 SP1Rel) 中创建了新的 WPF/.NET 4.0 项目进行测试。
Startup Project: TryUri
App.xaml
MainWindow.xaml
Custom Ctrl Project: TryUri.CCL
Icons/folder.png <-- Marked As Resource!
Views/TestUC.xaml
在 TestUC.xaml 中:
<Canvas>
<Border>
<Image Source="/Icons/folder.png" Height="Auto" Width="Auto" />
</Border>
</Canvas>
在 MainWindow.xaml 中:
// xmlns:uc="clr-namespace:TryUri.CCL.Views;assembly=TryUri.CCL"
<uc:TestUC />
结果:图片不显示!!
当我将路径更改为“../Icons/folder.png”时确实有效。
如果我将 Icons/folder.png 复制到 TryUri.CCL/Views/ 文件夹中,则“Icons/folder.png”可以工作。
但是,我永远无法像 MSDN 所说的那样在“/Icons/folder.png”中使用前导斜杠。
【问题讨论】:
-
我的猜测是您的工作目录在您的项目中设置错误。我会先检查一下。
-
如果我尝试将 png 作为文件访问,那么工作目录将很重要。我不是,它被标记为资源。我更新了问题以澄清这一点。谢谢。
-
我在下面自我回答。对于我的项目,我选择简单地使用相对于标记的路径(即“../icons/folder.png”),因为这是 IMO 最简单的选择。