如何识别点击的按钮属于哪个列表框项?

在WPF编程中,我有一个问题是编写按钮单击事件处理程序。 因为按钮位于列表框项目(datatemplate的一部分)内,并且当单击该按钮时,我无法分辨它属于哪个项目。 有什么解决方案吗? SOS – –

您似乎已将列表框绑定到集合,并且您的按钮是数据模板或项模板的一部分。
您可以将按钮的Tag属性绑定到数据对象:

    Name:      

点击事件:

 private void Button_Click(object sender, RoutedEventArgs e) { Button b = (Button)sender; Person p = (Person)b.Tag; MessageBox.Show(p.Name); } 

但是,正如其他人建议的那样,您可以使用Button的DataContext属性。 它已经指向我示例中的Person对象。

我认为通过使用Tag属性,您可以更好地控制要在事件处理程序中访问的内容。

有很多方法可以做任何事情! 选择最适合你的。

您可以从DataContext获取该信息。

 public class Person { public string Name { get; set; } public int Age { get; set; } } Persons = new ObservableCollection() { new Person() { Name = "John", Age = 30 }, new Person() { Name = "Tim", Age = 48 } }; lbPersons.DataContext = Persons; private void person_Clicked(object sender, RoutedEventArgs e) { Button cmd = (Button)sender; if (cmd.DataContext is Person) { Person p = (Person)cmd.DataContext; } } 

在XAML中:

             

ListBox.selectedItem和listbox.SelectedIndex将被设置为单击按钮的一部分。

假设列表框中的项目是类型MyListBoxItem

 void SomeButtonClick(Object sender, EventArgs e) { ListBox lb = sender as ListBox if (lb != null) { MyListBoxItem item = lb.SelectedItem As MyListBoxItem; if (item != Null) { item.MethodRelatedToButton(); // maybe } } } 

根据要求放大