Почему у вас есть кнопка с событием click внутри ListBox с событием SelectionChanged?Это компенсирует некоторые страшные UX, если у них разные действия!
Обычный подход - иметь ListBox с привязкой к данным, а затем использовать событие SelectionChanged для считывания выбранного элемента.
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var listBox = sender as ListBox;
var selectedItem = listBox.SelectedItem as MyDataBoundType;
if (selectedItem != null)
{
// do stuff
}
// if you use the ListBox for navigation, set the SelectedIndex to -1
// listBox.SelectedIndex = -1;
}
Но если вы действительно хотите это сделать, вам нужно использовать свойство Tag
.
<Button Click="ShowStuffOnMap_Click" Tag="{Binding}">
И затем в вашем обработчике событий:
private void ShowStuffOnMap_Click(object sender, RoutedEventArgs e)
{
var button = sender as Button;
var selectedItem = button.Tag as MyDataBoundType;
}
Но я все ещедумаю, что ваш подход здесь неправильный и означает плохой пользовательский опыт, поскольку обычный подход к списку состоит в том, что строка вся в списке - только один выбор.