MvvmCross 6 RecyclerView多个按钮项绑定

时间:2018-10-29 13:41:41

标签: xamarin android-recyclerview mvvmcross

我真的是Xamarin的新手,而我是MvvmCross的新手。目前,我成功地做了一些基本的事情。

但是现在,我面临一个简单的问题(对我来说)。我得到了MvxRecyclerView。每个项目都有2个按钮。如何绑定它们?

2 个答案:

答案 0 :(得分:0)

给出您的ViewModels

public class MyViewModel : MvxViewModel
{
    public MyViewModel()
    {
        this.MyItems.Add(new MyItemViewModel());
        this.MyItems.Add(new MyItemViewModel());
    }

    public ObservableCollection<MyItemViewModel> MyItems { get; set; } = new ObservableCollection<MyItemViewModel>();
}

public class MyItemViewModel : MvxNotifyPropertyChanged
{
     public MyItemViewModel()
     {
          // Initialize your commands
     }

     public ICommand MyCommand1 { get; set; }

     public ICommand MyCommand2 { get; set; }
}

您认为:

<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="match_parent"
    android:layout_height="match_parent">
    <mvvmcross.droid.support.v7.recyclerview.MvxRecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        local:MvxItemTemplate="@layout/item_test"
        local:MvxBind="ItemsSource MyItems" />
</LinearLayout>

在您的商品视图item_test.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="match_parent"
    android:layout_height="wrap_content">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="My button 1"
        local:MvxBind="Click MyCommand1" />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="My button 2"
        local:MvxBind="Click MyCommand2" />
</LinearLayout>

HIH

答案 1 :(得分:0)

非常感谢您! 它像一种魅力。

我错过的一点是对ItemViewModel类的MvxNotifyPropertyChanged的继承。

但是现在仍然有两个问题(我认为它们是相同的):

  • 其中一个项目按钮用于进行其他活动。
  • 其他按钮用于重新加载数据。

那么从item调用NavigationService和CustomService的最佳方法是什么? 它们实际上是像这样在MyViewModel的构造函数中传递的:  公共MyViewModel(IMvxNavigationService navigationService,ICustomService customService)

谢谢。