MVVMCross:绑定android xml中的嵌套属性

本文关键字:嵌套 属性 xml 绑定 android MVVMCross | 更新日期: 2023-09-27 18:08:54

假设我有这个ViewModel

public class PersonViewModel
{
    public string Name {get;set}
    public string LastName {get; set;}
    public Location Location {get;set;}
}

和Location对象

public class Location
{
    public decimal Latitude {get;set;}
    public decimal Longitude {get;set;}
    public string Address {get;set;}
}

我想绑定到PersonViewModel中Location对象的属性地址,就像这样

<TextView
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/textView1"
    mvx:MvxBind="Text Location.Address"
    android:gravity="center" />

当使用简单的属性时,一切都很好,这意味着一切都是正确配置的,就像在这种情况下。

正确的做法是什么?

MVVMCross:绑定android xml中的嵌套属性

正如Martijn00前面提到的,上面的代码是正确的。错误原因不同。

我使用json文件来加载对象。我使用了文件的插件默认位置(data/data/{appnamespace}/files)。

var fileStore = Mvx.Resolve<IMvxFileStore>();
var fileContent = "";
fileStore.TryReadTextFile("Person.json", out fileContent);
JsonConvert.DeserializeObject<PersonViewModel>(fileContent);

正如android文档所描述的,这个路由是设备的内部内存,在卸载应用程序时被删除。这意味着每次重新部署应用程序时,都会重新创建此路由,删除json文件,从而导致JsonConvert。