我正在使用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