Как привести ListBoxItem к классу, связанному со списком? - PullRequest
1 голос
/ 04 августа 2011

У меня есть ListBox со списком друзей, привязанных к классу Buddy {String name; Строковое сообщение}

Когда пользователь щелкает по элементу, я получаю щелчок по элементу, обрабатывая событие PreviewMouseDown:

var item = ItemsControl.ContainerFromElement(lb, e.OriginalSource as DependencyObject) as ListBoxItem;

Проблема в том, что я не могу конвертировать предмет в приятеля: если я пытаюсь разыграть с

Buddy b=(Buddy)item

Я получаю сообщение об ошибке, например, невозможно преобразовать тип ListBoxItem в Buddy

Как я могу сделать приведение к классу Бадди?

Ответы [ 3 ]

6 голосов
/ 04 августа 2011

должно быть на самом деле ...

Buddy b = (Buddy)item.DataContext;

Помогает ли это?

2 голосов
/ 04 августа 2011

Свойство DataContext в элементе ListBox будет Buddy, с которым связан элемент.Используйте это вместо.

Buddy b=(Buddy)(item.DataContext);
1 голос
/ 04 августа 2011

Это неправильный способ доступа к элементам (и использовать WPF). Вы должны обработать событие SelectionChanged, а затем привести SelectedItem к типу Buddy. Это объект, участвующий в выборе.

...