Как установить onclick прослушиватель в xamarin?

Я новичок в С# и Xamarin и пытаюсь реализовать элемент нижнего листа и не знаю, как правильно это сделать. Я использую 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 в качестве параметра, и я не знаю, как это сделать на С# правильно.

В 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());

Но это не сработало.

Ответ 1

Самый простой способ - действительно использовать событие Click, доступное для каждого представления. Однако для реализации IOnClickListener (или любого другого интерфейса, а также IJavaObject) вам нужно сделать класс, реализующий его наследование с Java.Lang.Object:

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

Таким образом, вам не нужно реализовывать IntPtr Handle, и ваш код будет работать просто отлично

Ответ 2

Вместо этого используйте событие click.

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

См. мой другой ответ для получения дополнительной информации