获取堆栈面板中某个Button的编号

Get the number of a certain Button in stack panel

嘿,我想创建一个包含多个按钮的堆栈面板,当我按下一个按钮时,它会告诉我它是哪个按钮。就像当我按下从顶部数第二个按钮时,我得到数字 2 等等。

按钮是用这个循环创建的:

for (int i = 0; i < LBresponse.Items.Count; i++)
{
  System.Windows.Controls.Button BTclear = new Button();
  BTclear.Content = "Clear";
  BTclear.Width = 50;
  BTclear.Height = 20;
  BTclear.HorizontalAlignment = HorizontalAlignment.Right;
  BTclear.Click += Button_Click;
  BTclear.IsEnabled = true;
  STPresponse.Children.Add(BTclear);
}

我可以通过按钮的位置来完成,但我希望有更好的解决方案。

一个想法是在创建按钮时将数字放入上下文中,但这不太好。

您可以将数字或索引存储在某处,例如 Tag 属性:

for (int i = 0; i<LBresponse.Items.Count; i++)
{
    System.Windows.Controls.Button BTclear = new Button();
    BTclear.Tag = i;
    BTclear.Content = "Clear";
    BTclear.Width = 50;
    BTclear.Height = 20;
    BTclear.HorizontalAlignment = HorizontalAlignment.Right;
    BTclear.Click += (ss, ee) => 
    {
        MessageBox.Show(((Button)ss).Tag.ToString());
    };
    BTclear.IsEnabled = true;
    STPresponse.Children.Add(BTclear);
}