如何检测绑定MvxListView并加载其绑定?

时间:2015-02-25 15:55:04

标签: xamarin mvvmcross

我在我的CustomMvxListView中使用了Inherted MvxListView,在添加或删除子项时,我可以使用可视化对象进行处理。

效果很好但是当许多物品受到约束时可能会很滞后。

有没有办法检测Mvx视图控件何时被绑定并加载到第一个绑定数据?

1 个答案:

答案 0 :(得分:1)

自己找到了一个好的解决方案; 要在ListView中跟踪Android中的Itemsource更改,您可以使用DataSetObserver。

喜欢:

    internal class MyObserver : DataSetObserver
{
    private readonly object view;

    public MvxListViewNonScrollableObserver(ViewToTrack view)
    {
        tView = view;
        DoSomething():
    }

    public override void OnChanged()
    {
        base.OnChanged();
        DoSomething():
    }
}

通过以下方式将其添加到ListView:

    class MyMvxListView : MvxListView
{
    protected override void OnAttachedToWindow()
    {
        base.OnAttachedToWindow();
        itemsourceObserver = new MyObserver(this);
        Adapter.RegisterDataSetObserver(itemsourceObserver);
    }

    protected override void OnDetachedFromWindow()
    {
        if (itemsourceObserver != null)
        {
            Adapter.UnregisterDataSetObserver(itemsourceObserver);
            itemsourceObserver = null;
        }
        base.OnDetachedFromWindow();
    }

    public void DoSomething()
    {

    }

DoSomething()在加载后和每个itemsource更改时都会被提升。