这是便携式项目中的页面
<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类型。如何检查是否真的找到了这个?
有人能在这里发现错误吗?
答案 0 :(得分:10)
正确的XAML是将应用名称添加到源。
<Image Source="{local:ImageResource MyMobileApp.myimage.jpg}" />
答案 1 :(得分:7)
默认情况下,图像将具有Build Action:None;这需要设置为Build Action:EmbeddedResource。 右键单击Image&gt;属性&gt;设置[Build Action:EmbeddedResource] [] 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