WPF Как узнать, какой элемент ListBox был нажат - PullRequest
7 голосов
/ 21 января 2011

У меня есть приложение WPF, в котором есть список, заполненный элементами типа «Соответствие».Как сделать так, чтобы кнопка (содержащаяся в элементе) фактически выбирала элемент, чтобы я мог извлечь значение?

Вот мой код: ни один из них не работает, поскольку нажатие кнопки фактически не выбирает элемент

private void LayButton_Click(object sender, RoutedEventArgs e)
{
    var x = (Market)ListBoxSelectedMarket.SelectedItem;
    var y = (sender as ListBoxItem);

}

Спасибо

Ответы [ 3 ]

12 голосов
/ 21 января 2011

Вы должны быть в состоянии использовать DataContext из нажатой кнопки и получить контейнер ListBoxItem оттуда, а затем выбрать его.

private void LayButton_Click(object sender, RoutedEventArgs e)
{  
    Button button = sender as Button;
    var dataContext = button.DataContext;
    ListBoxItem clickedListBoxItem = ListBoxSelectedMarket.ItemContainerGenerator.ContainerFromItem(dataContext) as ListBoxItem;
    clickedListBoxItem.IsSelected = true;
}
0 голосов
/ 08 апреля 2011

Если вы привязываетесь к объекту, альтернативный метод может быть (в VB)

Это затем дает вам экземпляр вашего объекта для игры и сохраняет ваши поля отображения в списке

Private Sub OTC_Settled_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        Dim pr_YourObject As New YourObject
        Dim btn As Button = CType(sender, Button)
        OTC = DirectCast(btn.DataContext, pr_YourObject)
     End Sub
0 голосов
/ 21 января 2011

Я не много занимался программированием WPF, но вы можете попробовать получить родительский элемент для кнопки, если она работает так же, как объект контейнера WinForms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...