MvvmCross:MvxListView中的不同ItemClick命令,用于多种布局

时间:2014-08-13 08:54:28

标签: c# android android-listview xamarin.android mvvmcross

我使用了这个问题的答案(MvvmCross : dynamic item template selection for MvxListView)并成功创建了一个多布局的MvxListView。但是现在我无法弄清楚如何将不同的ItemClick命令提供给不同的布局。当我在axml中创建MvxListView时,我在local:MvxBind属性中给出了ItemClick命令,但在特殊情况下覆盖该行为是我需要的。有没有人有任何建议?

1 个答案:

答案 0 :(得分:1)

找到了解决方案。

创建自定义MvxListView并重写ExecuteCommandOnItem解决了我的问题。我还在我的自定义MvxListView中添加了一个名为Parent的属性,我在我的活动中设置了该属性。这样我就可以调用父函数。

这样的事情:

public class EditMvxListView : MvxListView
{
    public EditStationsView Parent {
        get;
        set;
    }

    public EditMvxListView (Context context,IAttributeSet attrs) : base(context,attrs)
    {
    }


    protected override void ExecuteCommandOnItem (System.Windows.Input.ICommand command, int position)
    {
        var item = Adapter.GetRawItem (position) as Station;

        if (item.Name == "New Station") {
            Parent.ShowSearch ();
            return;
        }

        base.ExecuteCommandOnItem (command, position);
    }
}