Создайте кнопку как обычно, с обработчиком Click:
<Button Click="MyClickHandler">...</Button>
Теперь в вашем обработчике кликов у вас есть аргумент sender
, который будет содержать нажатую кнопку. Вы хотите элемент, которому принадлежит кнопка, хотя. Во-первых, вам нужно ListViewItem, который содержит кнопку. Есть несколько реализаций того, как найти визуального предка, вот первый результат, который я нашел. Добавьте этот метод расширения к статическому классу где-нибудь. Теперь ваш обработчик кликов выглядит так:
private void MyClickHandler(object sender, RoutedEventArgs e)
{
ListViewItem parent = ((DependencyObject)sender).TryFindParent<ListViewItem>();
}
Теперь вам нужно получить предмет, который идет с этим ListViewItem
. Это, к счастью, намного проще (хотя я понятия не имею, что это такое, поскольку в вашем посте ничего не сказано):
object ItemRelatedToButton = TheListBoxInQuestion.ItemContainerGenerator.ItemFromContainer(parent);
Замените object
типом, который фактически содержит ваш ListBox
, а названия - теми, которые действительно актуальны. Теперь вы можете взаимодействовать с элементом, к которому «привязана» кнопка.
Вы также можете убедиться, что parent
не равно нулю, просто на случай, если что-то странное произошло, и теоретически вы должны убедиться, что ItemRelatedToButton
тоже не равно нулю.