Xaml Xamrin表单:在ListView中滑动以删除(手势)
我想在Xamrin表单中实现刷卡删除功能,为此我尝试了以下方法Xaml Xamrin表单:在ListView中滑动以删除(手势),xaml,xamarin,swipe-gesture,xamarin.forms,Xaml,Xamarin,Swipe Gesture,Xamarin.forms,我想在Xamrin表单中实现刷卡删除功能,为此我尝试了以下方法 为列表视图编写了自定义渲染器,在渲染器的“OnElementChanged”中,我可以访问“CustomListView”的绑定命令,并可以将此命令添加到滑动手势,如下所示 swipeGestureRecognizer = new UISwipeGestureRecognizer (() => { if (command == null) { Console.WriteLine (
swipeGestureRecognizer = new UISwipeGestureRecognizer (() => {
if (command == null) {
Console.WriteLine ("No command set");
return;}
command.Execute (null);
});
但是,我在访问特定行(刷卡行)时遇到问题,因此我可以在列表视图中使刷卡行上的按钮可见/隐藏。请您推荐一种实现相同功能的方法好吗 您可以这样做:
protected override void OnElementChanged (ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged (e);
var swipeDelegate = new SwipeRecogniserDelegate ();
swipeGestureRecognizer = new UISwipeGestureRecognizer {
Direction = UISwipeGestureRecognizerDirection.Left,
Delegate = swipeDelegate
};
swipeGestureRecognizer.AddTarget (o => {
var startPoint = swipeDelegate.GetStartPoint ();
Console.WriteLine (startPoint);
var indexPath = this.Control.IndexPathForRowAtPoint(startPoint);
if(listView.SwipeCommand != null) {
listView.SwipeCommand.Execute(indexPath.Row);
}
});
this.Control.AddGestureRecognizer (swipeGestureRecognizer);
this.listView = (SwipableListView)this.Element;
}
现在使用ContextAction将滑动删除内置到Xamarin From的列表视图中。下面是如何做的最基本的教程。它很容易实现
我会将手势添加到ItemTemplate或UITableCell中。你在android上也实现了吗?xamarin表单实现涵盖了最基本的用例。仅供参考:不幸的是,您无法正确使用xamarin表单实现。你还被一些根本无法定制的最基本的菜单项所困扰(例如,为文本选择不同的字体),这意味着你需要立即开始查看自定义渲染器。是的,我发现这方面的文档非常缺乏。
public class SwipeRecogniserDelegate : UIGestureRecognizerDelegate
{
PointF startPoint;
public override bool ShouldReceiveTouch (UIGestureRecognizer recognizer, UITouch touch)
{
return true;
}
public override bool ShouldBegin (UIGestureRecognizer recognizer)
{
var swipeGesture = ((UISwipeGestureRecognizer)recognizer);
this.startPoint = swipeGesture.LocationOfTouch (0, swipeGesture.View);
return true;
}
public PointF GetStartPoint ()
{
return startPoint;
}
}