MVVMCross资源加载器

时间:2014-04-24 03:10:06

标签: android xamarin mvvmcross

据我所知,IMvxResourceLoader可以从特定于平台的项目的“Assets”或“Resources”文件夹中加载资源。如果这是真的,是否有一种方法/插件可以从共享Core项目加载嵌入式资源?将业务逻辑(或本地化)相关资源维护在一个地方而不是将它们复制到ios / win / android项目会很方便。

2 个答案:

答案 0 :(得分:2)

是的,可以做到。我已设法将一些资产(音频文件)放入核心并在main中使用。最后我把它作为Byte数组返回;我相信它可以被用来绑定更多。

这是我用过的代码

    public byte[] GetApplicationResource(ApplicationResourceName resourceName)
    {
        string resourcePath;
        switch (resourceName)
        {
            case ApplicationResourceName.AudioChord:
                resourcePath = AppConstants.ResourceNameAudioChord;
                break;

            default:
                throw new ArgumentOutOfRangeException("resourceName");
        }

        var assembly = Assembly.GetExecutingAssembly();
        using (var stream = assembly.GetManifestResourceStream(resourcePath))
        {
            // sanity check
            if (stream != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    stream.CopyTo(memoryStream);
                    return memoryStream.ToArray();
                }
            }
        }

        return null;
    }

希望有所帮助

答案 1 :(得分:1)

我认为你不能从核心项目获得所有引用(不幸的是= /)。 还有另一篇与此相似的帖子,您可能会发现它很有用: How to bind imageSource to ImageView in MvvmCross

希望有帮助=)