【问题标题】:how to bind events fluent API mvvmCross如何绑定事件流式API mvvmCross
【发布时间】:2020-06-21 14:38:51
【问题描述】:

我正在尝试使用 mvvmcross 框架从 Xamarin 表单 API 中的 CollectionView 控件绑定到“滚动”事件。我找到了MvxEventNameTargetBinding 的文档 应该工作,但没有关于如何工作的例子。所以我在视图中使用流利的 api 绑定事件

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)
    {
        ...
    }

上面的代码可以按照集合视图从模型中获取数据的方式工作。任何人都可以向我指出如何使用流畅的 API 访问 mvvmCross 框架之后的 EventArgs,以便我的模型知道当前可见项是什么?

感谢惠普

【问题讨论】:

    标签: mvvmcross


    【解决方案1】:

    我不知道如何使用 fluent API 来执行此操作,并且我不确定 CardCollectionView 是什么。我猜这是您的自定义CollectionView 课程?您可以尝试向Scrolled EventHandler 添加一个方法。

    所以在你看来:

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

    在您的视图模型中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2013-10-19
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      相关资源
      最近更新 更多