事件处理程序实现 F#

EventHandler Implementation F#

我正在 F# 中实现以下 C# 代码:

    using Softweb.Xamarin.Controls.iOS;

public class DemoViewController : UIViewController, ICardViewDataSource
{

    public CardView DemoCardView { get; set; }

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        DemoCardView = new CardView();

        //Wire up events
        DemoCardView.DidSwipeLeft += OnSwipe;
        DemoCardView.DidSwipeRight += OnSwipe;
        DemoCardView.DidCancelSwipe += OnSwipeCancelled;
        DemoCardView.DidStartSwipingCardAtLocation += OnSwipeStarted;
        DemoCardView.SwipingCardAtLocation += OnSwiping;
        DemoCardView.DidEndSwipingCard += OnSwipeEnded;
    }

    void OnSwipe(object sender, SwipeEventArgs e)
    {
        Console.WriteLine("View swiped.\n");
    }

    void OnSwipeCancelled(object sender, SwipeEventArgs e)
    {
        Console.WriteLine("Swipe cancelled.\n");
    }

    void OnSwipeStarted(object sender, SwipingStartedEventArgs e)
    {
        Console.Write("Started swiping at location {0}\n", e.Location);
    }

    void OnSwiping(object sender, SwipingEventArgs e)
    {
        Console.Write("Swiping at location {0}\n", e.Location);
    }

    void OnSwipeEnded(object sender, SwipingEndedEventArgs e)
    {
        Console.Write("Ended swiping at location {0}\n", e.Location);
    }
}

不过我不确定如何复制

DemoCardView.DidSwipeLeft += OnSwipe;

F# 中的语法(F#+= 的等价物是什么)。我知道这是负责事件订阅,这让我觉得我应该为此使用 F# 中的 Add 方法,但我不确定如何使用。此外,onSwipeonSwipeCancelled... 函数的签名应该是什么。 DidSwipeLeft 和其他人期望的类型是 'IEvent<EventHandler<SwipeEventArgs>,SwipeEventArgs>

完整的 API 称为 XCardView,可在此处找到:

https://components.xamarin.com/gettingstarted/XCardView/true

let onSwipe = fun args -> printfn "View swiped"

DemoCardView.DidSwipeLeft.Add(onSwipe)

或者,简单地

DemoCardView.DidSwipeLeft.Add(fun args -> printfn "View swiped")