Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get control name in Button event handler method Xamarin Forms

I have 20 buttons in my Xamarin Forms app . All of the buttons share the same click event method. What I want to do is use switch statement to check the button name but I am having difficulty finding the controls name that fired the event .

Please see the code :

private  void btnCollection_Clicked(object sender, EventArgs args)
    {
        var btn = (Button)sender;

        switch (btn.FindByName) // I want to get the name of the control 
        {

            case "btn1":
                break;

                case "btn2":
                break;
        }
    }

How can I get the button's name?

like image 667
abdul Avatar asked Mar 17 '17 13:03

abdul


3 Answers

You cannot access the x:Name property of a xaml element as this is just a hint for the compiler to name the variable.

What you can do however is to set the ClassId of your button so that you can retrieve it in the handler. Like this: Your xaml :

<Button ClassId="sdsd"
              Clicked="Button_OnClicked"/>

Your xaml.cs

private void LoginButton_OnClicked(object sender, EventArgs e)
        {
            var button = (Button) sender;
            var classId = button.ClassId;
        }
like image 159
Daniel Avatar answered Nov 12 '22 13:11

Daniel


Maybe this can help you

if(sender is Button){

   Button button = (Button)sender;
   if(button.Equals(myButton1)){
      // You are in myButton1
   }else if(button.Equals(myButton2)){
   }
}
like image 24
Alessandro Caliaro Avatar answered Nov 12 '22 11:11

Alessandro Caliaro


var btn = (Button)sender;

if(btn.Id == btn1.Id) {

}
else if(btn.Id == btn2.Id){
}
like image 29
Giuseppe Ricci Avatar answered Nov 12 '22 11:11

Giuseppe Ricci