嵌入的图像没有显示

时间:2015-11-27 07:15:40

标签: xamarin.forms

这是便携式项目中的页面

    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 xmlns:b="clr-namespace:Corcav.Behaviors;assembly=Corcav.Behaviors"
                 xmlns:local="clr-namespace:MyMobileApp;assembly=MyMobileApp"
                 x:Class="MyMobileApp.MainPage"
                 x:Name="MainPage">

      <Image Source="{local:ImageResource myimage.jpg}" />

这是我在同一个便携式项目中的ImageResourceExtension

namespace MyMobileApp
{
    [ContentProperty("Source")]
    public class ImageResourceExtension : IMarkupExtension
    {
        public string Source { get; set; }

        public object ProvideValue(IServiceProvider serviceProvider)
        {
            if (Source == null)
                return null;

            var imageSource = ImageSource.FromResource(Source);

            return imageSource;
        }
    }
}

我尝试将myimage.jpg添加为嵌入在我的项目的根目录和Resources文件夹中,但是没有显示图像。

调试时我看到返回的imageSource是Xamarin.Forms.StreamImageSource类型。如何检查是否真的找到了这个?

有人能在这里发现错误吗?

4 个答案:

答案 0 :(得分:10)

正确的XAML是将应用名称添加到源。

<Image Source="{local:ImageResource MyMobileApp.myimage.jpg}" />

答案 1 :(得分:7)

默认情况下,图像将具有Build Action:None;这需要设置为Build Action:EmbeddedResource。 右键单击Image&gt;属性&gt;设置[Build Action:EmbeddedResource] [enter image description here] 1

答案 2 :(得分:0)

你能解释一下扩展的意图吗?假设您将图像放在适当的文件夹中(iOS上的“资源”,Android上的“资源/可绘制”),那么您在XAML中所需要的只是:

<Image Source="FeaturedAreaMockup.jpg" />

那将在相应的文件夹中找到图像并显示它们 - 你为什么不这样做?扩展有什么意义?

答案 3 :(得分:0)

要阅读您需要使用的资产/资源文件夹:

ImageSource.FromResource

EmbeddedResource使用if ( x > 3 || y > 3 || z > 3 ) { ... }

中包含的图片

更多信息:why strcpy function