ответ для примера реализации
могу связать ItemClick из MvxRecyclerView (или его адаптера) с командой на моей ViewModel, используя Fluent API. Это работает, если я добавлю ItemsSource и ItemClick в XML, поэтому я не заинтересован в таком решении.
Я использовал этот пост в качестве отличного руководства (Как использовать свободный API MvvmCross для привязки TextView элемента RecyclerView к свойству его ViewModel на Android?) и все это работает, за исключением того, что я не могу связать ItemClick на MvxRecyclerView (или адаптере) с командой MainViewModel, которая приведет меня к следующему фрагменту (ItemsSource работает как шарм, но это свойство, а не команда!).
Ради краткости я не буду копировать код из оригинального поста (Как использовать свободный API MvvmCross для привязки TextView элемента RecyclerView к свойству его ViewModel на Android?) поэтому предположим, что MainViewModel из этого поста был улучшен командой ShowItemCommand как таковой:
public class MainViewModel : MvxViewModel
{
private IEnumerable<ViewModelItem> _viewModelItems;
public IEnumerable<ViewModelItem> ViewModelItems
{
get { return _viewModelItems; }
set { SetProperty(ref _viewModelItems, value); }
}
public MvxCommand<ViewModelItem> ShowItemCommand
{
get
{
return new MvxCommand<ViewModelItem>(selectedItem =>
{
ShowViewModel<ViewModelItem>
(new { itemId = selectedItem.Id });
});
}
}
}
и все остальное было выполнено согласно ссылочной должности.
Так что теперь, в дополнение к ItemsSource, я хочу подключить ItemClick на MvxRecyclerView (или Adapter) к команде. Причина, по которой они взаимозаменяемы, заключается в том, что MvxRecyclerView просто передает эти команды адаптеру.
Видимо, это должно работать ... но это не так:
adapter.ItemClick = ViewModel.ShowItemCommand;
Это тоже не работает:
set.Bind(recyclerView).For(v => v.ItemClick).To(vm => vm.ShowItemCommand);