C# 在另一个文件夹中添加图像,而不是在xamarin cross Platform中添加drawable
我可以使用C# 在另一个文件夹中添加图像,而不是在xamarin cross Platform中添加drawable,c#,xamarin,C#,Xamarin,我可以使用 <image source="live.png"/> 但我不知道如何从我在资源中创建的其他文件夹中获取图像 有人能帮我吗?Android对图像的放置位置非常挑剔,所以最好将图像存储在公共项目中。在本例中,我假设一个标准的Xamarin.Forms解决方案包含以下项目:Foo、Foo.Android、Foo.IOS和Foo.UWP。你的名字显然不同,所以你必须用Foos来代替 以下所有代码都将进入公共代码项目,Foo 首先,创建一个名为Extensions(只是为了保
<image source="live.png"/>
但我不知道如何从我在资源中创建的其他文件夹中获取图像
有人能帮我吗?Android对图像的放置位置非常挑剔,所以最好将图像存储在公共项目中。在本例中,我假设一个标准的Xamarin.Forms解决方案包含以下项目:Foo、Foo.Android、Foo.IOS和Foo.UWP。你的名字显然不同,所以你必须用Foos来代替 以下所有代码都将进入公共代码项目,
Foo
首先,创建一个名为Extensions
(只是为了保持代码整洁)的新文件夹,并向其中添加以下类:
[ContentProperty(nameof(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;
}
}
现在,将此类的命名空间添加到标记中:
xmlns:extensions="clr-namespace:Foo.Extensions"
接下来,为您的图像创建一个文件夹,同样是在您的公共项目中,而不是在您的Android项目中。您也可以创建子文件夹。添加图像并确保每个图像的生成操作都设置为嵌入资源
现在,您可以在XAML中引用这些图像,如下所示:
<Image Source="{extensions:ImageResource Foo.Images.Subfolder.Bar.png}">
请注意,您需要提供图像的完整路径,包括项目名称(本例中为Foo),并且文件夹由点分隔,而不是斜杠。您希望图像从何处来?如果您使用的是Xamarin.Forms,那么有一种方法可以使用来自公共PCL的图像,但是有点复杂。如果你只看Android,那么你的图片真的不应该放在任何地方,只能放在
Drawable
文件夹中。我正在学习跨平台Xamarina,我想把图片放在参考资料中的其他文件夹中,因为我需要对图片进行排序,非常感谢!这对我真的很有帮助。如果你能接受这个答案,让其他人看到它解决了这个问题,那就太好了。