我想显示一个项目列表,每个项目包含几个按钮和其他可点击的元素 . 问题是,默认情况下,Listview中的每个项都是可点击的 . 如何禁用它,并将可执行事件绑定到Listview中的元素?
您只需创建一个自定义视图单元格:
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; }
您还可以将按钮单击绑定到命令
如果您使用的是实际的Button元素,则不必执行任何特殊操作 . 每个Button都会响应它自己的Clicked事件 . 行的Tapped事件应该仅针对按钮元素之外的区域触发 .
2 回答
您只需创建一个自定义视图单元格:
最后一个TapGestureRecognizer是为了避免触摸的选择(和Android显示) .
并将其集成到ListView中
您还可以将按钮单击绑定到命令
如果您使用的是实际的Button元素,则不必执行任何特殊操作 . 每个Button都会响应它自己的Clicked事件 . 行的Tapped事件应该仅针对按钮元素之外的区域触发 .