Mvvm交叉绑定数据上下文

Mvvm cross binding data context

我正在尝试实施 mvvm 交叉解决方案。我遇到绑定问题..

我正在尝试实施 xamarin.android 中的解决方案。

下面是我的主布局页面 - Main.axml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        local:MvxBind="Text Title/>
    <Mvx.MvxListView
        android:id="@+id/SRMTypeList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:fastScrollEnabled="true"
        local:MvxItemTemplate="@layout/list_Item"
        local:MvxBind="ItemsSource PersonCollection" />
</LinearLayout>

下面是我的视图模型:

public class MainViewModel :MvxViewModel
{
    private string title;

    public String Title
    {
        get{ return title;}
        set
        {
            title = value; 
            RaisePropertyChanged (()=> Title);
        }
    }

    List<Person> _personCollection;       
    List<Person> PersonCollection
    {
        get { return _personCollection; }
        set
        { 
           _personCollection = value;
           RaisePropertyChanged (() => PersonCollection);
        }

    public MainViewModel()
    { 
        _personCollection = new List<Person>();
        PersonCollection.Add(new Person{Name="Steve", Salary=10000});
        PersonCollection.Add(new Person{Name="Mary", Salary=20000});
    }
}

MainView.cs

protected override void OnCreate (Bundle bundle)
{
     base.OnCreate (bundle);
     SetContentView (Resource.Layout.Main);
}

问题从这里开始出现在主屏幕中我的列表视图的项目模板中 list_Item.axml 如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <CheckBox
        android:id="@+id/checkbox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        local:MvxBind="?" />

    <TextView
        android:textColor="#fff"
        android:textSize="16sp"
        local:MvxBind="?"/>
</LinearLayout>

如何将 TextView 的文本和复选框绑定到父视图模型(即在主视图模型中 class)?

任何解决此问题的指示/帮助将不胜感激。

我已经浏览了以下链接..但是作为新手无法理解实现。

Binding button click in ListView template MvvMCross

MVVMCross changing ViewModel within a MvxBindableListView

我无法理解如何创建包装器 class 以及如何将项目模板 (list_Item.axml) 的数据上下文设置到此包装器 class。 它们在 mvvm 交叉中是否有任何方式,以便我可以将项目模板中的绑定直接引用到父视图模型,在我的例子中是 MainViewModel。

任何人都可以 post 一个更简单的例子吗? 谢谢

我不确定这是否是您要问的,但是要将此人的姓名绑定到列表项文本视图:

local:MvxBind="Text Name"

您应该使用 ObservableCollection 而不是使用 List

ObservableCollection<Person> _personCollection;       
ObservableCollection<Person> PersonCollection
{
    get { return _personCollection; }
    set
    { 
       _personCollection = value;
       RaisePropertyChanged (() => PersonCollection);
    }

}

对于复选框,我会向 Person class 添加一个字段,例如 IsSelected 并将其绑定到复选框:

 local:MvxBind="Checked IsSelected"