图像显示在Visual Studio设计器中,但不会在运行时显示

d.m*_*ada 30 wpf xaml image visual-studio-2010

我目前正在使用VS studio 2010,.NET 4.0.这是我的场景:

我目前有一个名为"Images"的类库项目,其中包含一个名为"Icons"的子文件夹.我的所有图标目前都存在于此项目中,并通过siteoforigin由多个项目访问.在设计师中,一切都很好,但在运行时,图像不会显示.

这是我的文件夹结构:

  • 根文件夹
    • 图片
      • 图标
    • 项目1
    • 项目2
    • 项目3

所有项目都引用Images类lib.proj,"Images"项目中"icons"子文件夹内的所有图标都设置为:"Build Action = Resource".

xaml看起来像这样(在设计时完全可见):

     <Button Name="Button1" Click="Button1_Click">
        <Button.Content>
            <Image Source="pack://siteoforigin:,,,/Data.Images;component/Icons/Button1.png" />
        </Button.Content>
    </Button>
Run Code Online (Sandbox Code Playgroud)

小智 49

这让我发疯了.我根据各种文章尝试了很多不同的东西,但没有任何效果.我的xaml窗口和图像位于与可执行程序集不同的DLL中.不确定这是否是我问题的一部分.

最后我成功了:

  1. 确保项目中的图像属性具有"Build Action"="Resource",而不是"Embedded Resource"
  2. 在xaml中,选择图像标记后,使用属性窗口选择Source下拉列表,因为现在图像显示在下拉列表中!这让visual studio为我格式化了字符串.

为我的图像格式化的字符串visual studio是:

<Image Source="/Paperless.Common;component/Resources/Checkbook.png" />
Run Code Online (Sandbox Code Playgroud)

其中"Paperless.Common"是我的程序集的名称,而"Checkbook.png"是我的图像,它位于"Resources"文件夹中.

  • 从属性源下拉列表中选择图像是可行的方法。 (4认同)
  • 从源下拉列表中选择图像,将我的 logo.png 更改为 /logo.png 现在它可以工作了。谢谢 (2认同)

Ami*_*Da. 38

也许Image没有将Build Action设置为Resource.如果它是其他任何东西,包括嵌入式资源,那么它将无法在运行时正确显示.

  • 完全做到了.怪异的Microsoft工作流程需要300步才能将怪异的图像添加到项目中. (6认同)
  • 这应该是关于这个主题的任何答案的一部分!谢谢. (5认同)

H.B*_*.B. 16

siteoforigin对于复制到可执行目录或子目录的文件,对于您应该使用的资源application,据我所知.

SiteOfOrigin:

路径:原始站点文件的名称,包括其相对于启动可执行程序集的位置的路径.

  • 我将图像源更改为:<Image Source ="pack:// application:,,,/Data.Images; component/Icons/Button1.png"/>并将图像的构建操作保持为"资源",并且仍然得到相同的结果.我还尝试将图像源更改为:<Image Source ="/ Data.Images; component/Icons/Button1.png"/>并得到相同的结果.参考项目是否必须是类lib.有什么可做的吗? (5认同)

小智 5

好吧,我在这个问题上浪费了超过 3 个小时的时间。您的回答帮助我部分解决了问题,这也是促使我加入这个有用讨论的原因。

我的问题解决了:

  1. 选择解决方案资源管理器中的所有图像。
  2. 右键单击并转到属性。
  3. 为“嵌入式资源”构建操作
  4. 复制到输出到“始终复制”
  5. 保存并构建解决方案。
  6. 添加图像并注意或 ZIndex 值。
  7. 毕竟,当我多次使用图像或尝试更改为同一图像控件上的另一个图像以将 XAML 或图像控件属性中的图像路径更改为:

    source="pack:://siteoforigin:,,,/Resources/image.png"
    
    Run Code Online (Sandbox Code Playgroud)