MVVMCross:在 android xml 中绑定嵌套属性
MVVMCross: Bind nested properties in android xml
假设我有这个 ViewModel
public class PersonViewModel
{
public string Name {get;set}
public string LastName {get; set;}
public Location Location {get;set;}
}
和位置对象
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" />
完成简单属性后,一切正常,这意味着一切都已正确配置,就是这种情况。
正确的做法是什么?
正如 Martijn00 之前提到的,上面的代码是正确的。错误原因不同。
我正在使用 json 文件加载对象。我使用了文件的插件默认位置 (data/data/{appnamespace}/files).
var fileStore = Mvx.Resolve<IMvxFileStore>();
var fileContent = "";
fileStore.TryReadTextFile("Person.json", out fileContent);
JsonConvert.DeserializeObject<PersonViewModel>(fileContent);
如android documentation所述,此路由是设备的内存,在卸载应用程序时会被删除。这意味着每次重新部署应用程序时,都会重新创建此路由,删除 json 文件,从而导致 JsonConvert.DeserializeObject 抛出异常。
假设我有这个 ViewModel
public class PersonViewModel
{
public string Name {get;set}
public string LastName {get; set;}
public Location Location {get;set;}
}
和位置对象
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" />
完成简单属性后,一切正常,这意味着一切都已正确配置,就是这种情况。
正确的做法是什么?
正如 Martijn00 之前提到的,上面的代码是正确的。错误原因不同。
我正在使用 json 文件加载对象。我使用了文件的插件默认位置 (data/data/{appnamespace}/files).
var fileStore = Mvx.Resolve<IMvxFileStore>();
var fileContent = "";
fileStore.TryReadTextFile("Person.json", out fileContent);
JsonConvert.DeserializeObject<PersonViewModel>(fileContent);
如android documentation所述,此路由是设备的内存,在卸载应用程序时会被删除。这意味着每次重新部署应用程序时,都会重新创建此路由,删除 json 文件,从而导致 JsonConvert.DeserializeObject 抛出异常。