为什么我不能在WPF应用程序中设置图像源?

时间:2010-03-17 19:10:33

标签: wpf image xaml resources

我只是在学习WPF。我正在使用VS 2008.我已经为我的XAML添加了一个Image控件,我在项目中添加了一个GIF文件。如果我使用XAML Designer的属性面板设置图像的Source属性,Source属性的下拉列表包含以下内容:

C:\ Sample Project; component / pinHorizo​​ntal.gif

这有几个问题:

  1. 我的项目名为“Sample Project”,不在我的驱动器的根目录中。

  2. 为什么“;组件”在那里?

  3. 如果我选择此值为给定,我会收到错误“属性值无效”(是的,不开玩笑)。

    如果我进入XAML源并手动设置Source属性,如下所示:

    <Image Name="PinImage" Source="pinHorizontal.gif"/>
    

    XAML Designer给出了这个错误:

    “文件pinHorizo​​ntal.gif不是项目的一部分,或者它的'Build Action'属性未设置为'Resource'。”

    为什么这项任务如此困难?如何分配图像源?

6 个答案:

答案 0 :(得分:4)

请仔细阅读this article - 但请注意,这并不是特别轻松阅读:-)

我怀疑你想要的图片路径是pack://application:,,,/pinHorizontal.gif。如果您的图片设置为BuildAction Resource,则可以正常使用。

答案 1 :(得分:2)

右键单击SolutionExplorer中的图像文件(pinHorizo​​ntal.gif),转到属性,这里是'Build Action'属性,需要将其设置为'Resource'。希望它有所帮助!!

答案 2 :(得分:1)

这篇文章是“也是”......不是原始问题的答案。

我只是想我会记录下来以防其他一些可怜的鼻屎将来出现这个问题...并且谷歌搜索该错误信息会发现这个问题......所以这里是个好地方。

我一直在创建新图标(实际上是位图)并将它们“动态”添加到我的Visual Studio 2008项目中(即添加〜现有项目)。 IDE已在我的XAML页面上报告file ${filename} is not part of the project or its 'Build Action' property is not set to 'Resource'错误...但我的项目构建并运行正常...所以给出了什么?

我尝试了所有我能想到的视觉工作室来刷新文件系统的视图,但无济于事。

好吧,我刚刚发现,重新启动Visual Studio会“刷新”其文件系统/构建输出内容的缓存,这会让IDE中那些恼人的非错误消失。所以我添加了一批图标,将它们全部标记为Resources~Create如果更新,构建,然后重新启动IDE,这一切都很好。

干杯。基思。

答案 3 :(得分:0)

在解决方案资源管理器中,选择您的项目并右键单击重建解决方案,然后尝试再次添加图像,它应该可以正常工作。

- 或 -

构建标签下选择重建解决方案,然后尝试重新添加图片。

答案 4 :(得分:0)

您可以在XAML中使用这段代码从绝对路径加载图像而不设置任何内容。使用DecodePixelWidth或DecodePixelHeight来节省应用程序内存。

<Image>
        <Image.Source>
            <BitmapImage DecodePixelWidth="200" UriSource="C:\image.png" />
        </Image.Source>
</Image>

希望它有所帮助!

答案 5 :(得分:-1)

我遇到了完全相同的问题。当弹出选择图像框并且对我有用时,我只需手动输入文件的位置。

我开始工作后再次打开“选择图像”框,发现file:///现在位于文件位置前面。我对Visual Basic几乎一无所知(我正在使用它),所以可能有一个很好的解释,但我没有。