Xamarin Android: как передать переменные в метод события кнопок в ExpandableListView? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть ExpandableListView с кнопками в дочернем виде.Я хочу связать обработчик событий нажатием кнопки.

Вот чего я хочу добиться:

public void func1()
{
    // let say we have following arguments
    int arg1= 100;          
    SomeObject arg2 = new SomeObj("John", "1000");
    button.Click -= DeleteActionHandler;
    button.Click += DeleteActionHandler;     // this is point-1
}

DeleteActionHandler имеет вид:

void DeleteActionHandler(object s, EventArgs e)
{
   // some implementation
   // I want  arg1 and arg2 to be passed here.
}

Вопрос в том, что я хочу передать некоторые аргументы в DeleteActionHandler из пункта 1.Могу ли я отправить аргументы в EventArgs ??или есть другой способ.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Передайте переменную методу события кнопки в xamarin.forms, используя xamarin studio, см. Пример ниже.

Пример

public partial class StackOverflowTest : ContentPage
{
    public StackOverflowTest()
    {
        InitializeComponent();
        string strvalue = "Delete";
        BtnTest.Clicked += delegate (object sender2, EventArgs e2)
        {
            DeleteActionHandler(sender2, e2, strvalue);
        };
    }

    private void DeleteActionHandler(object sender, EventArgs e, string strval)
    {
        DisplayAlert("Greeting", $"{strval}!", "Ok");
    }

}
0 голосов
/ 27 сентября 2018

Вы не можете напрямую передавать данные в DeleteActionHandler.Тем не менее, вы можете использовать Tag свойство button, чтобы установить данные и прочитать их позже в DeleteActionHandler, как это ((Button)sender).Tag.

Вот фрагмент кода на вашем примере кода:

public void func1()
{
    ...
    button.Tag = new ParametersWrapper(arg1, arg2);
}

void DeleteActionHandler(object s, EventArgs e)
{
   var args = (ParametersWrapper)((Button)sender).Tag;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...