作者:凌晨 | 来源:互联网 | 2023-10-12 15:49
我正在发布此问题,并将答复,因为在SO上缺少对此问题的有效解决方案。
问题是当您创建使用图像的自定义控件或外部库时,图像可能不会显示在使用该库的程序中。
在我的特定情况下,我具有使用自定义控件基类的用户控件。
由于某种原因,图像会出现在用户控件的设计视图和外部程序的设计窗口中。但是,在运行时它将不会在外部程序窗口中显示图像。
我从SO的其他解决方案中尝试了以下所有方法:
- 在DP的xaml中使用
pack://,
命令(在设计视图中有效)
- 引用外部程序中的各个xaml文件(从OO和SOLID的角度来看,这是一个坏主意)
- 在URI字符串之前使用
../
(在设计视图中有效)
- 使用
EmbeddedResource
构建图片
- 创建一个转换器来处理字符串(不必要的操作,这会给系统增加额外的垃圾,而且效果也不佳)
- 在自定义控件上创建额外的依赖项属性(从绑定的角度来看,这是一个混乱的主意)
- 使用
assembly;component/[folder name]/[image name]
(在设计视图中有效)
- 使用
[folder name/image name]
(在设计视图中有效)
- 更改
assemblyinfo.cs
文件和自定义类的静态构造函数以包含Generic.xaml
文件。
所以某些答案是如此接近,我才发现它,是因为我开始使用 Snoop WPF ,请在此处获取:Snoop @Github (我与他们无关无论如何,我只是发现了它)
我可以使用该程序深入到程序中,并找到正在发生的错误,URI字符串似乎在解释中存在问题。这排除了上面列表中的一堆东西。
最终,我通过搜索特定错误在The MSDN forums上找到了答案,
您必须使用:/[assembly];component/[folder name]/[image name]
,请注意,字符串的开头是/,这是我的唯一尝试之一。
即使在程序集不起作用之前,也要在/中使用字符串中的pack命令。
因此,对于名为 myLibrary 的图书馆项目,名为 MyControl 的自定义控件,名为 resources 的图像文件夹以及名为的图像该文件夹中的> myTestImage.png 。自定义控件的调用为: