0

在一个简单的 MvvmCross 项目中,我试图从 Android 上的 Asset/image.png 加载图像。我已经搜索过了,发现这是一种可行的方法。

Image 设置为 AndroidAsset 和 CopyAlways 并位于 Asset 文件夹中。在 ViewModel 我有这个:

private string _image = "image.png";
    public string Image
    { 
        get { return _image; }
        set { _image = value; RaisePropertyChanged(() => Image); }
    } 

在 axml

<ImageView
    android:src="@android:drawable/ic_menu_gallery"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/imageView1"
    local:MvxBind="{'AssetImagePath':{'Path':'Image'}}" />

在设置中

 protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
    {
        registry.RegisterCustomBindingFactory<ImageView>("AssetImagePath",
                                                       imageView => new MvxImageViewImageTargetBinding(imageView));
        base.FillTargetFactories(registry);
    }

当我运行该应用程序时,没有显示任何内容,并且日志报告:

Problem parsing Lang binding MvxException: PropertyName must start with letter - position 0 in {'AssetImagePath':{'Path':'Image'}} - char {

这个错误是什么意思?

4

1 回答 1

0

看起来您正在使用旧的瑞士前风格的 json 绑定。切换到瑞士 - 请参阅“mvvmcross 数据绑定”的https://github.com/slodge/MvvmCross/wiki/Databinding部分

另外,请注意问题https://github.com/slodge/MvvmCross/issues/372 - 链接到https://github.com/slodge/MvvmCross/issues/311(其中包含解决方法)

于 2013-08-15T03:18:25.043 回答