如何识别点击的按钮属于哪个列表框项?
在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 } } }
根据要求放大