C# 如何处理Xamarin.Forms中代码中定义的ViewCell的点击?

C# 如何处理Xamarin.Forms中代码中定义的ViewCell的点击?,c#,xamarin,xamarin.forms,tableview,C#,Xamarin,Xamarin.forms,Tableview,我在TableView中有多个ViewCell和ImageCell子类 我想在用户点击单元格时执行一些代码。无论何时触摸整个单元格,它都会高亮显示,但我在这里看不到任何可使用的事件处理程序 这不是只有在代码中才有XAML的等价物吗 我相信一定有一些API可以处理这个问题。也许我只是找对了地方 谢谢大家! 这可以通过将TapGestureRecognitor添加到单元格的视图布局中来实现 var absoluteLayout = new AbsoluteLayout { Children

我在TableView中有多个ViewCell和ImageCell子类

我想在用户点击单元格时执行一些代码。无论何时触摸整个单元格,它都会高亮显示,但我在这里看不到任何可使用的事件处理程序

这不是只有在代码中才有XAML的等价物吗

我相信一定有一些API可以处理这个问题。也许我只是找对了地方


谢谢大家!

这可以通过将TapGestureRecognitor添加到单元格的视图布局中来实现

var absoluteLayout = new AbsoluteLayout
{
    Children =
    {
        photo,
        editImage,
        label
    }
};

var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.NumberOfTapsRequired = 1;
tapGestureRecognizer.Tapped += (s, e) => {
    // handle the tap
};

absoluteLayout.GestureRecognizers.Add(tapGestureRecognizer);

View = absoluteLayout;
编辑:

或者,更好的替代方法是使用ViewCell的Tapped属性,这样就不会破坏“Tap动画”:


这可以通过向单元格的视图布局添加TapGestureRecognitor来实现

var absoluteLayout = new AbsoluteLayout
{
    Children =
    {
        photo,
        editImage,
        label
    }
};

var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.NumberOfTapsRequired = 1;
tapGestureRecognizer.Tapped += (s, e) => {
    // handle the tap
};

absoluteLayout.GestureRecognizers.Add(tapGestureRecognizer);

View = absoluteLayout;
编辑:

或者,更好的替代方法是使用ViewCell的Tapped属性,这样就不会破坏“Tap动画”:

Tapped += new EventHandler((e, s) => {

    if (command.CanExecute(null))
    {
        command.Execute(null);
    }

});