xaml图像在运行时没有显示但在设计期间显示(VB,wpf) - 为什么?

时间:2014-09-01 22:09:27

标签: wpf vb.net

我正在尝试了解WPF并创建了一个WPF测试项目。我在每个文件夹中放置一个 monkey01.jpg 图像,从项目的根开始,在层次结构中向上移动到 debug 文件夹。在MainWindow我创建了Image并定义源属性以指向 monkey01.jpg 并在中正确显示>设计视图。但是当我运行它时,图像不会出现。

  • 如果我将图像文件作为资源添加到项目,它将在运行时期间显示。 (但这不是我在这里测试的)
  • 如果在 xaml 文件中我写了绝对路径,就像Source="C:\Users\User\Desktop\visual_studio_projects\WpfApplication1\monkey01.jpg一样,它也会显示。
  • 但如果我使用相对路径(如下例所示),则不会显示图像。就好像在执行时,程序不会在项目文件夹及其子文件夹中运行;相反,它运行在其他无法访问图像的位置。为什么会这样?我错过了什么?

这是MainWindow.xaml代码:

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Image x:Name="Thumbnailtest" Source="monkey01.jpg" />
    </Grid>
</Window>

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要在图片的属性窗口中将Copy to Output Directory设置为&#34;如果更新则复制&#34;。

答案 1 :(得分:0)

当我将图像设置为资源并且不复制时,此处正常工作,请注意我将您的猴子图像更改为.png并为其创建了一个文件夹(数据/图像)。

<Window x:Class="MasoneryLibrary.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MasoneryLibrary;assembly=MasoneryLibrary"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid>
        <Image Source="Data/Images/monkey01.png" HorizontalAlignment="left" VerticalAlignment="Top" Width="290" Height="456"  Margin="285,0,-58,-136" Stretch="None" StretchDirection="DownOnly"/>
    </Grid>
</Grid>

嗯......这是一个图书馆吗? 您应该使用URI packs安全

使用URI包:

<Image Source="pack://application:,,,/MasoneryLibrary;component/Data/Images/monkey01.png" HorizontalAlignment="left" VerticalAlignment="Top" Width="290" Height="456"  Margin="285,0,-58,-136" Stretch="None" StretchDirection="DownOnly"/>

希望它有所帮助!

干杯,

了Stian