У меня есть ListBox, которому назначен пользовательский шаблон DataTemplate, так что он может правильно отображать свое содержимое - пользовательский объект «Accessory» (который состоит из трех строковых свойств) для каждой строки. Кроме того, есть кнопка в каждом ряду. Эта кнопка должна вызвать событие, которое добавляет выбранный аксессуар в список памяти. Вот шаблон данных:
<DataTemplate x:Key="AccessoryListBoxTemplate">
<StackPanel>
<!--Truncated-->
<TextBlock FontFamily="Avenir Next LT Pro" VerticalAlignment="Center" FontSize="14" Text="{Binding Path=AgilityHeader}" Margin="3,0,0,0" Grid.Column="0" />
<TextBlock FontFamily="Avenir Next LT Pro" VerticalAlignment="Center" FontSize="14" Text="{Binding Path=ItemNumber}" Grid.Column="1" />
<TextBlock FontFamily="Avenir Next LT Pro" HorizontalAlignment="Right" VerticalAlignment="Center" Text="{Binding Path=Price}" FontSize="14" Grid.Column="2" />
<Button x:Name="ButtonAccessoryAddToMemoryList" VerticalAlignment="Center" Click="buttonAccessoryAddToMemoryList_Click" HorizontalAlignment="Right" FontSize="14" Width="80" Grid.Column="3" Margin="0,5,0,5">Minneslista</Button>
</Grid>
</StackPanel>
</StackPanel>
</DataTemplate>
А вот ListBox:
<ListBox Grid.ColumnSpan="3" Grid.Row="1" BorderThickness="0" x:Name="ListBoxAccessories" ItemTemplate="{StaticResource AccessoryListBoxTemplate}" HorizontalContentAlignment="Stretch" ItemsSource="{Binding}" SelectedIndex="-1" IsEnabled="True" />
Проблема, с которой я столкнулся, заключается в следующем: я не могу надежно определить, по какой строке щелкнуть кнопку ButtonAccessoryAddToMemoryList, поскольку строка, в которой находится кнопка, не устанавливается в качестве SelectedItem для ListBox, если пользователь не выбирает эту строку первым а затем нажмите кнопку - и, честно говоря, кто это делает? :)
Как мне узнать, какая кнопка была нажата? Любая помощь будет принята с благодарностью. Спасибо!
[EDIT] Спасибо Чедвику за этот ответ. Работает отлично. [/ EDIT]