如何确定在WPF UserControl中单击了哪个控件?

时间:2011-10-04 16:17:08

标签: c# .net wpf

我有一个WPF用户控件,我有一个StackPanel。在这个面板中,我以这种方式以编程方式添加标签(Container是StackPanel的名称):

public void Insert(string Value)
{
     Label l = new Label();
     l.Content = Value;
     Container.Children.Add(l);
}

现在我想在用户点击标签时提供一些公共事件SelectedIndexChange。现在我有一个问题,如何确定点击了哪个标签。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果在Insert中添加了该行:

l.Click += ClickHandler;

然后ClickHandler的第一个参数将是引发Click事件的控件。

e.g。如果您的处理程序是:

private void ClickHandler(object sender, RoutedEventArgs e){...};

然后sender将成为点击的标签。

您也可以查看e.OriginalSource

答案 1 :(得分:0)

我猜你可以使用此代码

 l.MouseClick+= MouseClickHandler;

在标签之间切换示例:

private void label1_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton==  MouseButtonState.Pressed)
            {
                Label l = (Label)e.Source;
                switch (l.Name)
                {
                    case "lable1":
                        int a = 10;
                        break;
                }
            }
        }