Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在另一个文件夹中添加图像,而不是在xamarin cross Platform中添加drawable_C#_Xamarin - Fatal编程技术网

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,我想把图片放在参考资料中的其他文件夹中,因为我需要对图片进行排序,非常感谢!这对我真的很有帮助。如果你能接受这个答案,让其他人看到它解决了这个问题,那就太好了。