ItemClick没有绑定在MvxGridView中的Button上

时间:2014-11-05 15:51:30

标签: android xamarin mvvmcross

我在Click的项目上绑定MvxGridView事件时遇到问题(我正在使用ItemClick绑定)。

一切都很好,很好。当我使用TextView我的GoClick方法被正确解雇时。但是当我在TextView中将Button更改为ItemTemplateView时,则不会再调用GoClick方法。

根据this回答(选项编号1),一切都应该正常。但在Button案例中却没有。

任何帮助表示赞赏,我被困在这里。

我的viewModel:

public class MyViewModel : MvxViewModel
{
    private IEnumerable<MyListItem> items;

    public MyViewModel()
    {
        this.items = new List<MyListItem>
        {
            new MyListItem {Name = "Item1"},
            new MyListItem {Name = "Item2"},
        };
    }

    public IEnumerable<MyListItem> Items
    {
        get { return this.items; }
    }

    public ICommand SelectItem
    {
        get { return new MvxCommand<MyListItem>(this.GoClick);}
    }

    public void GoClick(MyListItem item)
    {
        //doSomething
    }
}

我的MvxGridView布局:

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/black"
    >
       <Mvx.MvxGridView
            android:layout_width="300dp"
            android:layout_height="match_parent"
            android:gravity="center"
            android:horizontalSpacing="10dp"
            android:numColumns="3"
            android:stretchMode="columnWidth"
            android:verticalSpacing="10dp"
            local:MvxItemTemplate="@layout/itemtemplateview"
            local:MvxBind="ItemsSource Items; ItemClick SelectItem"
            />
</LinearLayout>

我的ItemTemplateView(适用于TextView

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
        <TextView
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            local:MvxBind="Text Name"
            />
        <!-- CLICK ON THIS BUTTON DOES NOT WORK -->
        <!--
        <Button
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            local:MvxBind="Text Name"
            />
        -->
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

如果您想要按钮的click事件,并且您正在使用“Swiss”绑定,请使用:

local:MvxBind="Click DoNameClick"/>

而不是

local:MvxBind="Text Name"

查看文档:{​​{3}}

注意 - 您必须在ViewModel中使用公共“DoNameClick”getter!