代码之家  ›  专栏  ›  技术社区  ›  paxdiablo

wpf xaml文件的奇怪问题

  •  0
  • paxdiablo  · 技术社区  · 15 年前

    我刚刚启动了一个非常简单的WPF应用程序,它由一个主大图像和四个小图像组成。

    为了帮助布局,我在mspaint中创建了一些包含图像的jpeg -2 , -1 , 0 , +1 +2 并将它们复制到项目目录的顶层。

    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 回复  |  直到 15 年前
        1
  •  1
  •   AMissico    15 年前
    • 是否有可能之前添加然后删除plus2.jpg?

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

      • 清除SRC,生成解决方案,将SRC设置为已知工作映像,生成解决方案,将SRC设置为非工作映像。

      • 清除所有图像的SRC,生成解决方案,将所有图像的“生成操作”设置为“无”,生成解决方案,将生成操作设置为“资源”,生成解决方案,将所有图像的SRC设置为。

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

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

    我试图无缘无故地重复这个问题。我可以在项目中使用我“添加现有”的图像和我指定了src=“file:///c:…”的图像,包括或不包括构建操作集。即使是项目外的图像。

    我的另一个想法是图像有问题,但我没有添加评论。然而,现在我考虑一下,设计师将尝试在设置SRC后加载图像。如果无法加载图像,则将引发异常。由于您在设计阶段,您将收到带有“obsure”详细信息消息的无效属性提示。

    如果您在运行时加载图像以查看抛出了哪种异常(如果有)。

        2
  •  0
  •   kubal5003    15 年前

    你真的不在乎。当创建WPF应用程序时,VS2008有几十个这样的警告,其中大多数在构建之后就消失了。如果应用程序启动并正常工作-不要打扰它。就我个人而言,我已经在VS2008中为各种与WPF相关的bug安装了大约10-15个修补程序。VS2010更好。

    此外,最好在资源中包含图像文件-将其添加到项目(添加现有项),然后检查生成操作是否设置为资源。(右键单击解决方案资源管理器中的该文件并选择“属性”)。