繁体   English   中英

在按钮事件处理程序方法 Xamarin Forms 中获取控件名称

[英]Get control name in Button event handler method Xamarin Forms

我的 Xamarin Forms 应用程序中有 20 个按钮。 所有按钮共享相同的点击事件方法。 我想要做的是使用 switch 语句来检查按钮名称,但我很难找到触发事件的控件名称。

请看代码:

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;
        }
    }

我怎样才能得到按钮的名字?

您无法访问xaml元素的x:Name属性,因为这只是编译器命名变量的提示。

但是,您可以设置按钮的ClassId ,以便在处理程序中检索它。 像这样:你的xaml:

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

你的xaml.cs

private void LoginButton_OnClicked(object sender, EventArgs e)
        {
            var button = (Button) sender;
            var classId = button.ClassId;
        }

也许这可以帮到你

if(sender is Button){

   Button button = (Button)sender;
   if(button.Equals(myButton1)){
      // You are in myButton1
   }else if(button.Equals(myButton2)){
   }
}
var btn = (Button)sender;

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

}
else if(btn.Id == btn2.Id){
}

我确信@abdul 现在已经远远超过这个了,但是ClassId应该用于识别按钮的类型。

不过,我希望每个按钮都有一个独特的文本字段:

<Button Text="My awesome button" Clicked="MyAwesomeClickHandler"/>

在事件处理程序方法中可以很容易地阅读:

private void MyAwesomeClickHandler(object sender, EventArgs e)
{
     Button myAwesomeButton= (Button) sender;
     string myAwesomeText= myAwesomeButton.Text;
}

我认识的大多数人都是这样做的,所以我认为这可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM