2011-01-20 19 views
6

Mam aplikację WPF, w której znajduje się listbox wypełniony elementami typu "Dopasuj". Jak sprawić, aby przycisk (znajdujący się w elemencie) rzeczywiście wybrał element, aby mógł on wyodrębnić wartość?WPF Jak znaleźć, który element ListBox został kliknięty?

Oto mój kod: nie działa, ponieważ kliknięcie przycisku faktycznie nie wybrać pozycję

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

} 

Dzięki

Odpowiedz

12

Powinieneś być w stanie użyć DataContext z klikniętego przycisku i pobrać z niego kontener ListBoxItem, a następnie go wybrać.

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

To działa, dzięki! – Chris

0

nie robiłem dużo programowania WPF, ale można próbować coraz rodzica przycisku, jeśli działa tak samo, jak obiekt kontenerowy WinForm.

0

Jeśli są wiążące do obiektu alternatywna metoda mogłaby być (w VB)

To wtedy daje instancję Twojego obiektu do zabawy i oszczędza mając żadnych pól mapowania na 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 
Powiązane problemy