WPF,资源图像未正确定位

时间:2010-09-13 17:24:57

标签: c# wpf

我将项目中的图像添加为资源,如果我尝试将其添加到我的WPF项目中,它总是以

结尾
Error 1 The file images\background.png is not part of the project or its 'Build Action' property is not set to 'Resource'. C:\Users\Martinek\Documents\My\Learning.Dot.Net\WPF.8\WPF.8\Window1.xaml 21 47 WPF.8

我也尝试引用完整路径“file:///”等,即使将图像作为资源添加也会得到相同的结果

另请参阅带结果的XAML代码

<ImageBrush AlignmentX="Left" ImageSource="images/background.png" Stretch="Fill" />

附加图片: http://i.stack.imgur.com/bSjwi.png

4 个答案:

答案 0 :(得分:2)

我注意到您将Copy to Output Directory选项设置为“不要复制”。

尝试将其更改为“始终复制”或“如果更新则复制”,看看是否有帮助。

<强>更新

我刚刚写了一个快速示例应用程序试图解决这个问题。它似乎工作正常,所以我会在这里发布我的代码,希望它会有所帮助。

<Grid>
  <Grid.Background>
    <ImageBrush x:Name="brush" AlignmentX="Left" ImageSource="images/have_the_dumb.jpg" Stretch="Fill" />
  </Grid.Background>
</Grid>

在代码隐藏中,我添加了一些跟踪代码,以查看ImageBrush认为其ImageSource的位置。

    public ImageDisplay()
    {
      Trace.Listeners.Add(new TextWriterTraceListener(@"c:\happyface.trace.log"));
      Trace.AutoFlush = true;

      InitializeComponent();

      Trace.WriteLine(String.Format("Image thinks it's in {0}", brush.ImageSource.ToString()));
    }

在调试模式下运行时,您应该看到一行写入“输出”窗口(以及* .trace.log文件),其中包含它认为图像所在的URI。

我将图像放在我解决方案根目录下的图像文件夹中。我尝试将图像设置为“内容”(“如果更新则复制”)以及“资源”(不要复制),并且它都成功运行了两次。

希望这能指出你正确的方向。

答案 1 :(得分:1)

尝试使用pack语法:

<ImageBrush ImageSource="pack://application:,,,/Images/background.png" />

答案 2 :(得分:1)

<ImageBrush AlignmentX="Left" ImageSource="pack://application:,,,/[ASSEMBLY_NAME];component/Images/background.png" Stretch="Fill" />

[ASSEMBLY_NAME]是包含资源的dll或可执行文件的名称(没有扩展名)。

答案 3 :(得分:0)

我有两个想法 - 使用反斜杠而不是正斜杠。 (这应该不重要 - 但这就是在这里工作的......)

另一个想法是你的项目路径看起来搞砸了 - 尝试将解决方案复制到硬盘的根目录。对于包含太多句点/斜线或其他任何内容的路径,您可能遇到了一些奇怪的问题。