我想显示一个项目列表,每个项目包含几个按钮和其他可点击的元素。问题是,默认情况下,Listview中的每个项都是可点击的。如何禁用它,并将可执行事件绑定到Listview中的元素?
答案 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事件应仅针对按钮元素之外的区域触发。