2011-01-20 8 views
6

Tengo una aplicación WPF en la que hay un cuadro de lista lleno de elementos del tipo 'Coincidir'. ¿Cómo hago que el botón (contenido dentro del elemento) seleccione realmente el elemento para que pueda extraer el valor?WPF ¿Cómo puedo encontrar en qué elemento de ListBox se hizo clic

Aquí está mi código: ni trabaja desde clic en el botón en realidad no seleccione el elemento

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

} 

Gracias

Respuesta

12

Debería poder usar el DataContext del botón hecho clic y obtener el contenedor ListBoxItem desde allí, y luego seleccionarlo.

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

Eso funciona, ¡Gracias! – Chris

0

no he hecho mucho de programación de WPF, pero se podría tratar de conseguir que el padre del botón si funciona igual que un objeto contenedor WinForms.

0

Si va a enlazar a un objeto un método alternativo podría ser (en VB)

Esto entonces le da una instancia del objeto para jugar y le ahorra tener cualquier asignación de campos en el cuadro de lista

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 
Cuestiones relacionadas