【问题标题】:Get control name in Button event handler method Xamarin Forms在 Button 事件处理程序方法 Xamarin Forms 中获取控件名称
【发布时间】:2017-08-09 01:34:58
【问题描述】:

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

如何获取按钮的名称?

【问题讨论】:

  • btn.Name 应该可以工作...您的 btn 引用显示在您的 Button 上,因此您可以直接向它请求名称。
  • xamarin 表单按钮中没有 Name 属性!

标签: c# ios xamarin.forms


【解决方案1】:

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

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

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

你的 xaml.cs

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

【讨论】:

  • 非常感谢丹尼尔。它有效。对不起,我不能为你给出的答案投票,因为我还没有足够的声誉。
  • 这解决了问题,但根据微软this link 的说法,这不是ClassId 的目的。我也被困在这一点上(Xamarin 的新手)。所以需要一个真正的解决方案。我完全有同样的问题,想唯一地识别按钮。
  • 您可以创建一个继承自 Button 的类,您可以在其中拥有您想要的任何内容并从 xaml 进行设置
【解决方案2】:

也许这对你有帮助

if(sender is Button){

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

【讨论】:

    【解决方案3】:
    var btn = (Button)sender;
    
    if(btn.Id == btn1.Id) {
    
    }
    else if(btn.Id == btn2.Id){
    }
    

    【讨论】:

    • 请添加一些关于此修复如何解决问题的说明,或者问题中发布的代码中的错误部分。
    • 什么是_Rubrica
    • 请原谅 .. 这是一个 xaml 按钮:
    【解决方案4】:

    我确定@abdul 现在已经远远超出了这个范围,但应该使用ClassId 来识别按钮类型。

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

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

    在事件处理方法中很容易读懂:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 2015-02-02
      相关资源
      最近更新 更多