为什么XAML图像源属性包含“/ MyApp; component”?

时间:2011-04-21 12:54:07

标签: image xaml windows-phone-7

我正在开发一个Windows Phone应用程序。

我正在使用图像,当我使用“属性”面板选择图片时,我得到以下XAML:

<Image x:Name="GameImage" Margin="8" Source="/MyApp;component/Assets/Icons/GameImage.png"/>

为什么我会收到“/MyApp;component/...”? (有没有更好的方法?)

如果我尝试Image.Source="Assets/Icons/GameImage.png",为什么它不起作用?

4 个答案:

答案 0 :(得分:39)

这是因为您的图片将其构建操作设置为资源(这是默认设置)。如果您将其切换为内容,则可以在XAML中设置源代码,如下所示:

<Image x:Name="GameImage" Margin="8" Source="/Assets/Icons/GameImage.png"/>

要在代码中设置它,您可以这样做:

BitmapImage tn = new BitmapImage();
tn.SetSource(Application.GetResourceStream(new Uri(@"Assets/Icons/GameImage.png", UriKind.Relative)).Stream);
Image.Source = tn;

出于性能原因,您应该使用内容。有关更多详细信息,请参阅此文章:http://www.windowsphonegeek.com/tips/wp7-working-with-images-content-vs-resource-build-action

答案 1 :(得分:0)

标记为嵌入资源的任何内容都是从程序集加载的。因此,使用站点需要知道指定嵌入资源的程序集。在您的情况下,这是MyApp

答案 2 :(得分:0)

不要忘记添加:

using System.Windows.Media.Imaging;

BitmapImage tn = new BitmapImage();
tn.SetSource(Application.GetResourceStream(new Uri(@"Assets/Icons/GameImage.png", UriKind.Relative)).Stream);
Image.Source = tn;

答案 3 :(得分:0)

您可以使用:

BitmapImage obj = new BitmapImage();
obj.UriSource = new Uri(mera_image.BaseUri,file.Path);