WPF XAML文件的奇怪问题

时间:2010-06-10 07:39:41

标签: wpf xaml visual-studio-2008

我刚刚开始了一个非常简单的WPF应用程序,它包含一个主要的大图像和四个较小的图像。

为了协助布局,我在MsPaint中创建了一些包含图像-2-10+1+2的JPEG只需将它们复制到项目目录的顶层。

XAML片段包含五张图片:

<Image Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="4" Grid.RowSpan="1"
    Margin="0,0,0,0" Name="imgPicture" Stretch="Fill" VerticalAlignment="Top"
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/zero.jpg" />
<Image Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="1" Grid.RowSpan="1"
    Margin="0,0,0,0" Name="imgPicMinus2" Stretch="Fill" VerticalAlignment="Top"
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/minus2.jpg" />
<Image Grid.Column="2" Grid.Row="4" Grid.ColumnSpan="1" Grid.RowSpan="1"
    Margin="0,0,0,0" Name="imgPicMinus1" Stretch="Fill" VerticalAlignment="Top"
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/minus1.jpg" />
<Image Grid.Column="3" Grid.Row="4" Grid.ColumnSpan="1" Grid.RowSpan="1"
    Margin="0,0,0,0" Name="imgPicPlus1" Stretch="Fill" VerticalAlignment="Top"
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/plus1.jpg" />
<Image Grid.Column="4" Grid.Row="4" Grid.ColumnSpan="1" Grid.RowSpan="1"
    Margin="0,0,0,0" Name="imgPicPlus2" Stretch="Fill" VerticalAlignment="Top"
    Source="file:///C:/DAndS/Pax/MyDocs/VS2008/Projects/MyProj/plus2.jpg" />

当我尝试为plus2图像设置source属性时,它会弹出一个对话框,说明:

Property value is not valid.
Details
   |
   V
   The file plus2.jpg is not part of the project or
   its 'Build Action' property is not set to 'Resource'.

然而,如果我将文件重命名为plus3.jpg或plus2x.jpg,我就没有这个问题。

为什么会特别抱怨plus2.jpg?

2 个答案:

答案 0 :(得分:1)

  • 您之前添加的是否可能已删除plus2.jpg?

  • 您是否有可能在步骤之间没有构建解决方案?

    • 清除src,构建解决方案,将src设置为已知工作映像,构建解决方案,将src设置为非工作映像。

    • 清除所有图像的src,构建解决方案,将所有图像的“构建操作”设置为“无”,构建解决方案,将构建操作设置为“资源”,构建解决方案,设置所有图像的src。 / p>

  • (最可能)可能损坏的图像,无效调色板的图像,图像以无效格式保存。

    • 查看您是否可以在运行时加载图像
    • 使用资源编辑器和“另存为”加载图像。
    • 文件扩展名没有区别,因为内部图形格式决定了图像类型。这意味着,如果您创建了一个jpg但将其保存为bmp,设计人员仍会正确加载图像。
  • 尝试<Image.Source> <BitmapImage UriSource="sampleImages/bananas.jpg" /> </Image.Source>

我试图复制这个问题没有运气。我能够使用“添加现有”的图像和我指定src =“file:/// c:...”图像的图像,包含和不包含构建操作集。甚至是项目之外的图像。

我的另一个想法是图像有问题,但我没有添加评论。然而,现在我考虑一下,一旦你设置了src,设计师就会尝试加载图像。如果无法加载图像,则会抛出异常。由于您处于设计时,因此会收到带有“obsure”详细消息的无效属性提示。

如果在运行时加载图像以查看抛出的异常类型,如果有的话,该怎么办。

答案 1 :(得分:0)

不要真的关心它。创建WPF应用程序时VS2008有几十个这样的警告,其中大部分都在构建后消失。如果应用程序启动并正在运行 - 请不要管它。我亲自为VS2008中的各种WPF相关错误安装了大约10-15个修补程序。 VS2010要好得多。

除了将图像文件包含在资源中可能更好 - 您将它们添加到项目中(添加现有项目),然后检查构建操作是否设置为资源。 (在Solution Explorer中右键单击该文件,然后选择Properties)