【问题标题】:How do you get the button name/tag when the event button.click occurs?当事件 button.click 发生时,如何获取按钮名称/标签?
【发布时间】:2013-12-11 21:48:48
【问题描述】:

我正在以编程方式制作按钮并将它们添加到堆栈面板,以便每次用户导航到页面时按钮都会更改。我正在尝试做这样的事情,当我单击创建的按钮时,它会抓住按钮的标签并转到正确的页面。但是,我无法使用 RoutedEventHandler 访问按钮元素。代码如下:

foreach (item in list)
{ 
   Button newBtn = new Button();
   newBtn.Content = "Button Text";
   newBtn.Tag = item.Tag;
   newBtn.Name = item.Name;
   newBtn.Click += new RoutedEventHandler(newBtn_Click);
}

private void newBtn_Click(object sender, RoutedEventArgs e)
{
   NavigationService.Navigate(new Uri("/DetailPage.xaml?selectedItem=" + sender.Tag, UriKind.Relative));
}

【问题讨论】:

    标签: c# wpf windows-phone-8 windows-phone visual-studio-2013


    【解决方案1】:
    (sender as Button).Tag
    

    应该可以。

    【讨论】:

      【解决方案2】:

      非常简单,只需将发送者转换为按钮对象,您将获得所有按钮属性

        private void newBtn_Click(object sender, RoutedEventArgs e)
          {
             NavigationService.Navigate(new Uri("/DetailPage.xaml?selectedItem=" + ((Button)sender).Tag, UriKind.Relative));
          }
      

      【讨论】:

        【解决方案3】:

        这里有几个解决方案。首先是简单检查事件的发送者是否是Button 元素并使用那里的信息

        private void newBtn_Click(object sender, RoutedEventArgs e)
        {
          Button b = sender as Button;
          if (b != null) { 
            NavigationService.Navigate(new Uri("/DetailPage.xaml?selectedItem=" + b.Tag, UriKind.Relative));
          }
        }
        

        另一个更安全/友好的选项是创建一个 lambda 来处理直接访问您想要的 Button 实例的事件

        foreach (item in list)
        { 
           Button newBtn = new Button();
           newBtn.Content = "Button Text";
           newBtn.Tag = item.Tag;
           newBtn.Name = item.Name;
           newBtn.Click += (sender, e) => {
             NavigationService.Navigate(new Uri("/DetailPage.xaml?selectedItem=" + newBtn.Tag, UriKind.Relative));
           };
        }
        

        【讨论】:

          【解决方案4】:
          int tag = (sender as Button).Tag
          

          【讨论】:

            【解决方案5】:

            http://msdn.microsoft.com/en-us/library/windows/apps/hh758286.aspx

            按钮 b = 作为按钮的发送者; // 你的逻辑在这里

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2023-03-12
              • 1970-01-01
              • 1970-01-01
              • 2011-01-22
              • 1970-01-01
              • 2018-09-21
              • 2012-11-29
              相关资源
              最近更新 更多