2010-06-10 63 views
0

我刚开始一个非常简单的WPF应用程序,它由一个主要的大图像和四个较小的图像组成。WPF XAML文件的奇怪问题

为了帮助布局,我创造了一些JPEG文件在MSPAINT包含图像-2-10+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图像,它与一个对话框,指出抱怨:

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?

+1

是否有可能您之前添加然后删除plus2.jpg? – AMissico 2010-06-10 07:47:12

+0

您有没有可能在步骤之间建立了解决方案? – AMissico 2010-06-10 08:19:52

+0

@AMissico,我不认为我添加/删除/添加。我试图设置该图像的源属性的_first_时间是当它抱怨时,即使它没有抱怨其他三个。我得看看重建。我现在所做的只是编辑XAML /布局,我甚至还没有试图运行它。你应该把这些评论作为答案,以防万一你是正确的。至少,你会得到一个帮助我的好消息,如果事实证明你是对的,你也会得到一个大绿剔。 – paxdiablo 2010-06-10 09:44:45

回答

1
  • 是否有可能先前已添加,然后删除了plus2.jpg?

  • 您可能没有在步骤之间建立解决方案吗?

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

    • 清除所有图像的src,构建解决方案,将所有图像的“Build Action”设置为“None”,构建解决方案,将构建操作设置为“Resource”,构建解决方案,设置所有图像的src。

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

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

我试过,没有运气复制的问题。我能够使用我“添加了现有”的图像以及我指定了src =“file:/// c:...”的图像项目中的图像,无论是否带有构建操作集。即使项目之外的图像。

我的另一个想法是图像有问题,但我没有添加评论。然而,现在我想到了,设计师会在设置src后尝试加载图像。如果图像无法加载,则会抛出异常。由于您处于设计阶段,因此会收到无效的属性提示,并显示“不详”的详细信息。

如果您在运行时加载映像以查看引发了什么样的异常(如果有),该怎么办。

+0

我不认为这是一个损坏的图像,因为简单的重命名只需要它来使它工作或不工作。有趣的是,我把它转移到另一台机器上,它工作正常,所以也许这是安装时的一个小故障。第二台机器将成为真正的开发环境,所以我可能会忘记这个问题。我会让Q开放几天,看看其他人是否有洞察力。 – paxdiablo 2010-06-10 10:42:37

+0

啊,忘了“简单重命名”。 – AMissico 2010-06-10 10:48:14

+0

有趣。转至http://missico.spaces.live.com/blog/cns!7178D2C79BA0A7E3!370.entry并尝试“ClearRecent.vbs”脚本。确保您在运行之前查看代码,并注释掉任何对您不想运行的Clear ...过程的调用。我敢打赌,这将解决问题。它已经为许多开发人员在众多机器上解决了许多问题,无数年来已经解决了许多问:O) – AMissico 2010-06-10 10:56:16

0

不太在意它。 VS2008创建WPF应用程序时有几十个这样的警告,并且大部分警告在构建后消失。如果应用程序启动并正在工作 - 请保持独立。就个人而言,我已经为VS2008中的各种WPF相关错误安装了大约10-15个修补程序。 VS2010好多了。

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