2010-08-24 13 views
11

Estoy tratando de cambiar la plantilla de Control en un ListBoxItem cuando se selecciona desde el ListBox. Para hacerlo, iba a obtener el ListBoxItem seleccionado del ListBox mismo, y establecer la plantilla de control en eso. ¿Cómo voy a hacer esto? Lo he intentado, SelectedItem y eso devuelve el objeto enlazado dentro de ListBoxItem.Obtener ListBoxItem en un ListBox

Respuesta

20

Puede recuperar el contenedor elemento de la partida consolidada mediante el uso de la ItemContainerGenerator:

object selectedItem = listBox.SelectedItem; 
ListBoxItem selectedListBoxItem = listBox.ItemContainerGenerator.ContainerFromItem(selectedItem) as ListBoxItem; 
0

Ahora puede hacerlo con este:

ListBoxItem container = listBox.ContainerFromIndex(listBox.SelectedIndex) as ListBoxItem; 

La función ItemContainerGenerator.ContainerFromItem() parece obsolete ahora.

Si ha establecido la plantilla de elementos para el cuadro de lista a continuación, se puede obtener de

UIElement item= container.ContentTemplateRoot; 
Cuestiones relacionadas