Mvvmcross MvxListView项访问viewmodel

时间:2016-04-12 13:47:49

标签: c# android listview xamarin mvvmcross

我有一个带有自定义类列表的viewmodel。此列表使用MvxListView显示在我的UI中。我可以轻松访问海关类的属性,但我现在需要的是一种从项目模板访问视图模型而无需修改类的方法:

班级:

public class MyDataClass
{
    public string Name {get; set;};
}

viewmodel:

public class MyViewModel : MvxViewModel
{
    //...
    private string _sample;
    public string Sample
    { 
        get { return this._sample; }
        private set { this.SetProperty(ref this._sample, value); }
    }

    private List<MyDataClass> _dataList;
    public List<MyDataClass> DataList
    { 
        get { return this._dataList; }
        private set { this.SetProperty(ref this._dataList, value); }
    } 
}

视图中的MvxListView视图:

<Mvx.MvxListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/testListView"
    local:MvxBind="ItemsSource DataList"
    local:MvxItemTemplate="@layout/data_item" />

最后,data_item

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeightSmall"
    android:textAppearance="?android:attr/textAppearanceLarge"
    local:MvxBind="Text Name + ???.Sample"
    android:textColor="@color/primary"
    android:gravity="right|center_vertical"
    android:paddingEnd="5dp" />

我需要得到的是???.Sample,它应该是MyViewModel.Sample - 但我不知道如何获得它!

注意:我无法修改MyDataClass以将ViewModel添加为属性,这个必须保持不变。可以毫无问题地修改Viewmodel本身和视图,以解决这个问题。

1 个答案:

答案 0 :(得分:0)

编写一个包装MyDataClass类的新类,并添加新属性,该属性返回视图所需的连接属性。在列表上的Sample setter循环中,更新新属性。