我正在使用MvvmCross在我的Xamarin Android項目。我有一個MvxActivity
與MvxRecyclerView
,我已經在其佈局文件中分配了一個項目模板。如何使用MvvmCross fluent API將RecyclerView項目的TextView綁定到Android上其ViewModel的屬性?
<MvxRecyclerView
android:id="@+id/my_recycler_view"
local:MvxItemTemplate="@layout/item_recycler_view" />
視圖模型很簡單,它是由剛剛保存數據的RecyclerView
顯示一個屬性:
public class MainViewModel : MvxViewModel
{
private IEnumerable<ViewModelItem> _viewModelItems;
public IEnumerable<ViewModelItem> ViewModelItems
{
get { return _viewModelItems; }
set { SetProperty(ref _viewModelItems, value); }
}
}
一般來說,我喜歡用MvvmCross流利的API儘可能因爲隱式重構支持。 所以在我的活動,我綁定了MvxRecyclerView
的屬性是這樣的:
var recyclerView = View.FindViewById<MvxRecyclerView>(Resource.Id.my_recycler_view);
var set = this.CreateBindingSet<MainView, MainViewModel>();
set.Bind(recyclerView)
.For(v => v.ItemsSource)
.To(vm => vm.ViewModelItems);
set.Apply();
到目前爲止好。現在,該項目模板佈局文件基本上只包含一個TextView
:
<LinearLayout>
<TextView
android:id="@+id/innerText" />
</LinearLayout>
而且我ViewModelItem
類看起來是這樣的:
public class ViewModelItem
{
public string Title { get; set; }
}
我現在的問題是,如何和我在哪裏綁定TextView.Text
財產使用流利的API的ViewModelItem.Title
財產?
我知道,通過在項目模板佈局文件中提供MvxBind
屬性,沒有流利的API很容易,但我更喜歡流利的API解決方案。
有一點要注意,你可能想通過分配點擊命令到您的自定義'ViewHolder',否則任何綁定到ItemClick都不會有任何影響。在[這個stackoverflow答案]示例(http://stackoverflow.com/questions/42938112/mvxrecyclerview-fluent-api-binding#answer-43055796)。 – Plac3Hold3r