2011-01-20 2 views
6

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

Вот не мой код: ни работает с нажатием кнопки на самом деле не выберите элемент,

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

} 

Благодаря

ответ

12

Вы должны иметь возможность использовать 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

Это работает, спасибо! – Chris

0

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

0

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

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

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 
Смежные вопросы