如何判断单击了哪个WPF UserControl?

时间:2013-10-02 18:08:07

标签: wpf events button controls

我有一堆用户控件,上面有按钮存储在列表框中。现在他们都将他们的按钮事件传递给主脚本并打印出“点击了一个按钮”,如果打印出“按钮D被点击”会更好,因为我需要准确存储在数组中点击的按钮。

2 个答案:

答案 0 :(得分:1)

事件调用中的sender参数指的是发送按钮。

private void btn1_Click(object sender, RoutedEventArgs e)
{
   Button button = (Button)sender;
}

如果第一个没有,这可能会有效:

private void btn1_Click(object sender, RoutedEventArgs e)
{
  Button button = (Button)e.OriginalSource;
}

如果您只想要listboxitem

,这是一种更通用的方法
private void btn1_Click(object sender, RoutedEventArgs e)
{
    object context = (e.OriginalSource as FrameworkElement).DataContext;
    var lbi = lb.ItemContainerGenerator.ContainerFromItem(context) as ListBoxItem;
}

看帖子: How to select ListBoxItem upon clicking on button in Template? How to retrieve sender in click handler from toolbartray or other control in wpf?

答案 1 :(得分:1)

你不能使用按钮的CommandParameter并引用它。