我真的是Xamarin的新手,而我是MvvmCross的新手。目前,我成功地做了一些基本的事情。
但是现在,我面临一个简单的问题(对我来说)。我得到了MvxRecyclerView
。每个项目都有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)
谢谢。