我将项目中的图像添加为资源,如果我尝试将其添加到我的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" />
答案 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)
我有两个想法 - 使用反斜杠而不是正斜杠。 (这应该不重要 - 但这就是在这里工作的......)
另一个想法是你的项目路径看起来搞砸了 - 尝试将解决方案复制到硬盘的根目录。对于包含太多句点/斜线或其他任何内容的路径,您可能遇到了一些奇怪的问题。