嵌入的图像在UserControl中不显示

Jam*_*Hay 9 silverlight wpf xaml image

我有一个Image控件,其中包含嵌入图像的路径(构建操作'资源').

<Image Source="Assets/images/image.png" Stretch="None" />
Run Code Online (Sandbox Code Playgroud)

如果我将它添加到我的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>
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么会发生这种情况并且可能会指出我的解决方案.

干杯,J

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

编辑:

设置

<Image Source="/Assets/images/image.png" Stretch="None" />
Run Code Online (Sandbox Code Playgroud)

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

awe*_*awe 17

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

<Image Source="/MyAppName;component/images/image.png" Stretch="None" />
Run Code Online (Sandbox Code Playgroud)

原始图像位于images/image.png中

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


Tho*_*que 8

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