Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XAML WPF自定义控件库未在外部项目中显示嵌入图像_C#_Wpf_Xaml_Wpf Controls - Fatal编程技术网

C# XAML WPF自定义控件库未在外部项目中显示嵌入图像

C# XAML WPF自定义控件库未在外部项目中显示嵌入图像,c#,wpf,xaml,wpf-controls,C#,Wpf,Xaml,Wpf Controls,我发布了这篇文章,由于缺乏有效的、标记正确的解决方案,我将予以答复。 问题是,当您创建使用图像的自定义控件或外部库时,图像可能不会显示在使用该库的程序中 在我的特定情况下,我有使用自定义控件基类的用户控件 由于某种原因,图像会出现在usercontrol的设计视图和外部程序的设计窗口中。但是,在运行时,它不会在外部程序窗口中显示图像 我从其他解决方案中尝试了以下所有方法: 在DP的xaml中使用pack://、,命令(在设计视图中工作) 在外部程序中引用单个xaml文件(从OO和SOLID的角

我发布了这篇文章,由于缺乏有效的、标记正确的解决方案,我将予以答复。

问题是,当您创建使用图像的自定义控件或外部库时,图像可能不会显示在使用该库的程序中

在我的特定情况下,我有使用自定义控件基类的用户控件

由于某种原因,图像会出现在usercontrol的设计视图和外部程序的设计窗口中。但是,在运行时,它不会在外部程序窗口中显示图像

我从其他解决方案中尝试了以下所有方法:

  • 在DP的xaml中使用
    pack://、,
    命令(在设计视图中工作)
  • 在外部程序中引用单个xaml文件(从OO和SOLID的角度来看,这是一个坏主意)
  • 在URI字符串之前使用
    。/
    (适用于设计视图)
  • 使用
    EmbeddedResource
    构建图像
  • 创建一个转换器来处理字符串(不必要,会给系统添加额外的垃圾,而且工作不太好)
  • 在自定义控件上创建额外的依赖项属性(从绑定的角度来看,这是一个混乱和坏主意)
  • 使用
    组件;组件/[文件夹名称]/[图像名称]
    (适用于设计视图)
  • 使用
    [文件夹名称/图像名称]
    (适用于设计视图)
  • 更改
    assemblyinfo.cs
    文件和自定义类的静态构造函数以包括
    Generic.xaml
    文件

所以有些答案非常接近,我发现它只是因为我开始使用Snoop WPF,请点击这里:(我与他们没有任何关系,我只是发现了它)

我可以使用这个程序深入到程序中,找到正在发生的错误,URI字符串在解释时似乎有问题。这排除了上面列表中的一系列内容

最终我通过搜索具体的错误找到了答案, 您必须使用:
/[assembly];component/[folder name]/[image name]
,请注意字符串的开头是a/,这是我一次尝试中唯一缺少的东西

即使在字符串中使用pack命令,在程序集之前使用/也不起作用

因此,对于名为myLibrary的库项目,一个名为MyControl的自定义控件,一个名为resources的图像文件夹,以及该文件夹中名为myTestImage.png的图像。对自定义控件的调用将是:

<local:MyControl ImageSource="/myLibrary;component/resources/myTestImage.png" />

有两件事:1)它不是“打包命令”,而是方案,它有特定的格式。控件中的正确用法是
pack://application:,,,/我的图书馆;component/resources/myTestImage.png
not
pack://、、/myLibrary;component/resources/myTestImage.png
,这听起来像是您尝试过的。2) 如果你看一下你链接到的MSDN论坛帖子,你会发现他们实际上从StackOverflow问题中得到了答案,这基本上是一个重复的问题。我实际上尝试了这两个问题,但都不起作用。是的,这确实是相同的结果,但是由于它的措辞方式,当我搜索时,我无法找到它。我只是在MSDN论坛上发现的,他们在那里提到了更多的错误。