如何在 xamarin 中设置 onclick 监听器?

How to set onclick listener in xamarin?

我对 C# 和 Xamarin 还很陌生,一直在尝试实现底部 sheet 元素,但不知道如何正确执行。我正在使用 Cocosw.BottomSheet-Xamarin.Android 库。

这是我的代码:

Cocosw.BottomSheetActions.BottomSheet.Builder b = new Cocosw.BottomSheetActions.BottomSheet.Builder (this);
b.Title ("New");
b.Sheet (Resource.Layout.menu_bottom_sheet)

现在我想我应该使用 b.Listener(...),但它需要一个接口 IDialogInterfaceOnClickListener 作为参数,我不知道如何在 C# 中正确地做到这一点。

在Java我可以写

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Perform action on click
    }
});

我试过这样做:

class BottomSheetActions : IDialogInterfaceOnClickListener {
    public void OnClick (IDialogInterface dialog, int which) {
        Console.WriteLine ("Hello fox");
    }

    public IntPtr Handle { get; }

    public void Dispose() {

    }
}

然后是这个:

b.Listener (new BottomSheetActions());

但是没用。

改用点击事件。

button.Click += delegate 
{
    //Your code
};

查看我的其他 了解更多信息

最简单的方法确实是使用每个视图都可用的 Click 事件。但是,为了实现 IOnClickListener(或任何其他也是 IJavaObject 的接口),您需要使实现它的 class 继承自 Java.Lang.Object:

internal class BottomSheetActions : Java.Lang.Object, IDialogInterfaceOnClickListener 
{
    public void OnClick (IDialogInterface dialog, int which)
    {
        Console.WriteLine ("Hello fox");
    }
}

这样您就不需要实现 IntPtr Handle 并且您的代码将正常工作