La "respuesta" por encima de mi punto de vista no responde a la pregunta real, y de hecho la pregunta original indica que la cuestión autor ya tenía una solución muy eficiente para la problema. Sin embargo, la "respuesta" proporcionada simplemente muestra cómo adjuntar un subobjeto a un TreeViewItem y cómo posteriormente procesarlo utilizando un método personalizado. Si bien esto es útil, esta respuesta no aborda la naturaleza real de la pregunta original.
Existen muchos escenarios en los que TreeViewItem necesita tener un objeto externo adjunto que no pertenece a la lista Elementos del elemento de TreeView. Esto facilita el acceso al objeto externo adjunto para fines específicos de la aplicación cuando el usuario selecciona TreeViewItem de TreeView. Este concepto es completamente diferente de la idea de agregar subobjetos a un TreeViewItem.
Un método alternativo para resolver este problema, a diferencia de la solución implementada originalmente por el autor de la pregunta, es crear una subclase de la clase TreeViewItem y agregar información personalizada, como un objeto adjunto. Este principio se ilustra en el artículo http://msdn.microsoft.com/en-us/library/1330h6a4.aspx. Después de implementar esta subclase personalizada TreeViewItem, esta subclase se puede agregar a la lista de elementos de TreeView o TreeViewItem. Cuando el usuario selecciona el elemento de TreeView, el objeto devuelto de la selección será la subclase personalizada, que contendrá la información personalizada que la subclase haya definido.
Una ventaja adicional de usar una subclase TreeViewItem personalizada en lugar de TreeViewItem es que la subclase puede implementar comportamientos personalizados. Por ejemplo, para mostrar una información sobre herramientas personalizada cuando el usuario pasa el ratón sobre el tema, la subclase puede configurar un objeto de información sobre herramientas por sí mismo con un código como:
ToolTip tip = new ToolTip() { Content = "Tooltip display value" };
ToolTipService.SetToolTip(this, tip);
Gracias por la respuesta. ¿Cómo implementar una "HierarchicalDataTemplate anidada" por así decirlo? Por ejemplo, los elementos en el enlace ItemsSource tienen otra lista dentro de ellos, y quiero que la lista sea una sublista de ellos. –
np Dreas. ¿Puedes marcar como respuesta y hacer una pregunta separada sobre las HierarchicalDataTemplates anidadas? –
Hola Kent, haré. –