.net wpf listbox selecteditem listboxitem

.net - listbox itemtemplate wpf



Hacer WPF ListBoxItems seleccionable (1)

Tengo un ListBox con una ItemTemplate bastante simple definida, que contiene un TextBlock y un Button . Esto se muestra como esperado, pero hay un problema sin embargo. Cuando hago clic en el contenido de ListBoxItem , es decir, el texto o el botón, la línea no se selecciona en el ListBox . Si hago clic en las partes en blanco de la línea, lo hace. Me gustaría que ListBoxItem se seleccione cuando hago clic en cualquier parte de la línea. ¿Qué se necesita para lograr esto?

<ListBox ItemsSource="{Binding SomeElements}"> <ListBox.ItemTemplate> <DataTemplate> <ListBoxItem Selected="ListBoxItem_Selected"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Title}"></TextBlock> <Button>Click</Button> </StackPanel> </ListBoxItem> </DataTemplate> </ListBox.ItemTemplate> </ListBox>


@Natrium Nope, el problema es diferente aquí,

  1. Debe eliminar ListBoxItem dentro de DataTemplate. DataTemplate no puede tener el elemento ListBoxItem y no funcionará correctamente. Cualquier cosa que defina en DataTemplate se coloca automáticamente dentro de ListBoxItem en tiempo de ejecución, por lo que en su caso, esto es lo que se crea.

ListBoxItem DataTemplate ListBoxItem StackPanel...

  1. Si desea rastrear el evento de selección, entonces solo debe capturar el evento ListBox.SelectionChange, no necesita rastrear ListBoxItem_Selected.

Cambia tu código a esto.

<ListBox ItemsSource="{Binding SomeElements}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Title}"></TextBlock> <Button>Click</Button> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>