Xamarin.Forms - 在Listview单元格中绑定多个按钮单击?

时间:2016-04-25 13:29:30

标签: listview mvvm xamarin xamarin.forms

我想显示一个项目列表,每个项目包含几个按钮和其他可点击的元素。问题是,默认情况下,Listview中的每个项都是可点击的。如何禁用它,并将可执行事件绑定到Listview中的元素?

2 个答案:

答案 0 :(得分:1)

您只需要创建一个自定义视图单元格:

public class MyCell : ViewCell
{
    public MyCell ()
    {
        var button1 = new Button {Text = "Button 1"};
        button1.Clicked += (sender1, e1) => {
           // Action for button 1
        };
        var button2 = new Button {Text = "Button 2"};
        button2.Clicked += (sender, e) => {
          // Action for Button 2
        };
        View = new StackLayout
        {
            Orientation = StackOrientation.Horizontal,
            Children = {
                 button1,
                 button2,
            }
        };
        View.GestureRecognizers.Add(new TapGestureRecognizer());
    }
}

最后一个TapGestureRecognizer是为了避免选择(以及在Android上显示)触摸。

并将其集成到ListView

public DemoPage ()
{
    var listView = new ListView
    {
        ItemsSource = new[] {"cell 1", "cell 2", "cell 3", "cell 4"},
        ItemTemplate = new DataTemplate(typeof (MyCell))
    };
    Content = listView;
}

您还可以将按钮单击绑定到命令

答案 1 :(得分:0)

如果您使用的是实际的Button元素,则不必执行任何特殊操作。每个Button都会响应它自己的Clicked事件。行的Tapped事件应仅针对按钮元素之外的区域触发。