как связать события беглым API mvvmCross - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь выполнить привязку к событию «прокрутка» из элемента управления CollectionView в API форм Xamarin с использованием инфраструктуры mvvmcross. Я нашел документацию, что MvxEventNameTargetBinding должен работать, но нет примера того, как. Поэтому я связываю событие, используя свободный API в View

set.Bind(CardCollectionView).For(v => v.ItemsSource).To(vm => vm.Cards).OneWay();
set.Bind(CardCollectionView).For("Scrolled").To(vm => vm.CardDetailScrollPositionChanged);

, и модель имеет следующий API:

public IMvxCommand<EventArgs> CardDetailScrollPositionChanged { get; private set; }
   ...
CardDetailScrollPositionChanged = new MvxAsyncCommand<EventArgs>(async (EventArgs arg) => CardScrolledFunction(arg));
   ...
private async Task CardScrolledFunction(EventArgs args)
    {
        ...
    }

Приведенный выше код может работать так, как коллекция представление получает данные из модели. Может ли кто-нибудь указать мне, как получить доступ к EventArgs после фреймворка mvvmCross, используя свободный API, чтобы моя модель знала, что является текущим видимым элементом?

Спасибо HP

1 Ответ

0 голосов
/ 10 марта 2020

Я не знаю, как это сделать с помощью свободного API, и я не уверен, что такое CardCollectionView. Я полагаю, это ваш класс CollectionView? Вы можете попробовать добавить метод к Scrolled EventHandler.

Итак, по вашему мнению:

var viewModel = ViewModel as YourViewModelHere;
CardCollectionView.Scrolled += viewModel.CardDetailScrollPositionChanged;

и в вашей модели представления:

public void CardDetailScrollPositionChanged(object sender, EventArgs e)
{
    ...
}
...