我的问题是:我读MSDN错误或是MSDN错误? 我正在尝试通过相对URI引用图像资源 。
“本地程序 集子 文件夹中的资源文件”= “/ Subfolder/ResourceFile.xaml ”
在表2中:标记中的相对URI(这里http://msdn.microsoft.com/en-gb/library/aa970069.aspx )。
为什么MS不能使用.Net打开?
用Win32 API编写应用程序事件信息
比较墨迹序列化格式中的签名
Windows操作系统和内存pipe理 – 应用程序最小化时会发生什么?
由VB.Net WinForms ClickOnce安装创build的快捷方式没有目标选项卡
所以,我在Vs2010(v10.0.40219.1 SP1Rel)中创build了新的WPF / .NET 4.0项目来testing。
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 />
结果: 图像不显示!
当我将path更改为“../Icons/folder.png”时, 它确实有效。
如果我把图标/ folder.png复制到TryUri.ccl / Views /文件夹,那么“Icons / folder.png”就起作用了。
但是,我无法像MSDN所说的那样在“/Icons/folder.png”中获得主要的正斜杠。
Service.1中的ServiceBase.RequestAdditionalTime()
使用.NET的Windows Shell集成
如何在C#中指定非精确path
C#.NET从Web应用程序的串行端口访问
调用Form.Show()时设置窗体的位置
原因是,作为一个单独的程序集运行时,您的Relative Pack URI必须以../开头,否则没有前导的反斜杠,这是因为从MSDN(重点是我的) ,如何使用相对URI。
绝对与相对包装URI
…
然而,如果使用前导反斜杠 ,则相对包URI参考被认为是相对于应用程序的根 。
因此,如果您希望图像保持相对于您引用的程序集,则只需省略前导斜杠或在子文件夹中使用../ 。
请参阅下面的图像以查看运行时的示例:
答案是这样的: 相对路径中的前导斜杠总是解析为主程序集,而不是标记所在的程序集。
为了使其工作方式,MSDN说,我将不得不将所有图标存储在主程序集中的“图标/”文件夹,而不是在自定义控件的DLL。
如果您选择将资源存储在“图标/”文件夹中的dll程序集中,则必须使用与正在使用的标记相关的路径(即“ ../Icons/folder.png ”)引用它们, ../Icons/folder.png必须使用程序集名称限定路径(即“ /AssemblyName;component/Icons/folder.png ”)
只需将<ApplicationName>替换为应用程序的名称即可
Source="/<ApplicationName>;component/Icons/folder.png"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。