【问题标题】:Embedded images not showing when in a UserControl在用户控件中时不显示嵌入的图像
【发布时间】:2010-12-05 23:05:03
【问题描述】:

我有一个包含嵌入图像路径的图像控件(构建操作“资源”)。

<Image Source="Assets/images/image.png" Stretch="None" />

如果我将它添加到 MainPage.xaml 中的容器中,则图像看起来很好。当如下所示的 UserControl 中有相同的图像,然后在 MainPage.xaml 上添加该 UserControl 的实例时,图像不会出现。

<UserControl x:Class="HomePage.Views.SimpleUserContol"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <Grid x:Name="LayoutRoot" >
        <Image Source="Assets/images/image.png" Stretch="None" />
    </Grid>
</UserControl>

任何人都可以解释为什么会发生这种情况,并可能为我指明解决方案的方向。

干杯,J

(我在 Silverlight 工作,但我认为 WPF 中可能会发生同样的事情)

编辑:

设置

<Image Source="/Assets/images/image.png" Stretch="None" />

在将构建操作设置为“内容”时工作正常,但在使用“资源”时它不起作用。问题肯定是它在文件结构中的相对位置,因为 add ../ 工作正常。如果可能的话,我仍然想要一个从程序集中获取图像的解决方案

【问题讨论】:

    标签: wpf silverlight xaml image


    【解决方案1】:

    我遇到了这个问题,我尝试将图像移入和移出 Canvas,并在 Canvas 容器中上下移动。我什至尝试操纵 pa​​nel.zindexes 无济于事。我正在使用 source="/images/map.jpg"。图像文件夹是通过右键单击项目并添加文件夹来创建的,因此它位于资源文件夹下方。 已解决:我导航到 Windows 资源管理器中的图像文件夹并使用 alt+d 和 ctrl+c 来复制文件位置,使用这些 \ 而不是这些 /,瞧,它起作用了。

    【讨论】:

      【解决方案2】:

      我还发现,当图像包含需要在文件名中编码的特殊字符(例如“+”)时,编码 %2b 也会导致问题。

      我建议重命名任何可能包含转义字符的图像。

      【讨论】:

        【解决方案3】:

        如果您需要将其构建类型从 Content 更改为 Resource,请尝试构建干净。我的一切都完全正确(其他项目资源的路径、构建类型等),但直到我在图像文件夹中添加了一个新图像之后它才起作用,这可能会清除旧状态。

        其实就是手动删除图片所在项目中的bin和obj文件夹。

        【讨论】:

          【解决方案4】:

          仅当站点的根目录不在子目录中时,使用“/”才能到达站点的根目录。即:管理站点作为主站点的子目录(http://www.somesite.com/admin)。在这种情况下,使用“/assets/images/image.png”将首先转到父站点。您可以像这样引用图像:'~/assets/images/image.png'

          【讨论】:

            【解决方案5】:

            您必须将其作为资源引用,而不仅仅是路径。 这就是它在 WPF 应用程序中的完成方式:

            <Image Source="/MyAppName;component/images/image.png" Stretch="None" />
            

            原始图片位于images/image.png

            注意:
            我没有 SilverLight 的经验,但你说它可能在 WPF 中很相似,所以我建议这个...

            【讨论】:

              【解决方案6】:

              您正在使用图像的相对路径。如果您的 UserControl 位于子目录中,则相对路径不再有效。您应该使用像 "/Assets/images/image.png""pack://application:,,,/Assets/images/image.png" 这样的绝对路径(如果您的 UserControl 将被另一个程序集使用,请使用最后一个版本)

              【讨论】:

                【解决方案7】:

                我认为问题与您的图像嵌入资源时获得的“虚拟”名称空间(从它的逻辑路径)以及与您的用户控件名称空间的差异有关。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-07-16
                  • 1970-01-01
                  • 2013-01-28
                  • 2012-07-05
                  • 2016-01-20
                  相关资源
                  最近更新 更多