Windows Presentation Foundation y Entity Framework, poderosa combinación I : Como surtir de datos a un control TreeView

En uno de los proyectos los que estamos trabajando en Plain Concepts, hemos tenido que trabajar con el control TreeView de Windows Presentation Foundation (WPF)  y con Entity Framework (EF), como fuente de los datos que se suministran a nuestro control TreeView, así que voy a ir escribiendo una serie de post con el titulo “Windows Presentation Foundation y Entity Framework, poderosa combinación” sobre cómo combinar estas grandes tecnologías.

En este primer post voy a centrarme en cómo definir la forma de suministrar los datos al control TreeView.

El control TreeView, como otros controles que heredan de la clase ItemsControl, admiten dos formas de insertarle los elementos hijos. A través de la propiedad ItemSource en el que podemos pasarle una colección que implemente IEnumerable, o bien con la propiedad Items e ir añadiendo los elementos que queramos. Estas dos formas no se pueden combinar, sino que debemos de escoger entre una u otra para surtir a nuestro control de los datos que queremos. Ahora bien, ¿Qué diferencias hay, o cuando es conveniente usar una forma o la otra?


Si utilizamos ItemSource, simplemente le pasamos la colección en la que tenemos los datos, y el añade los elementos de la propia colección. ¿Pero qué ocurre si queremos añadir o eliminar la lista? Pues que si no hemos definido un Databinding debemos de modificar la colección y volver a modificar el valor de la propiedad ItemSource.  En un principio esta forma de trabajar esta más pensada para elementos que son listas de objetos, como ListView, ListBox o ComboBox, en la que no se va ir modificando la colección. Como añadido a este caso, podemos pasarle a la propiedad ItemSource una estructura Hierarchical DataTemplates, como por ejemplo un XML, y el propio control TreeView es capaz de representarnos esta estructura jerarquica. Este caso lo veremos más en particular en un futuro post.

El otro camino de trabajar con el control TreeView es ir añadiendo manualmente los objetos a través de la propiedad Items. Para ser más exactos la forma correcta seria ir añadiendo TreeViewItems, insertar en la propiedad DataContex el objeto que queramos poner en el árbol, e ir anidando la estructura de datos que queremos obtener, ya que a un elemento TreeViewItem le podemos ir añadiendo hijos de la misma manera que al control TreeView.
Un ejemplo de cómo realizar este caso, puede ser el siguiente código.

List<Aplicacion> source = Aplications.RetrieveAllAplications();

 

                foreach (Aplicacion item in source)

                {

                   TreeViewItem aux = new TreeViewItem();

                   aux.DataContext = item;

                   node.Items.Add(aux);

                }

Hasta aquí este primer post, espero que os pueda ser de utilizad, en los siguientes post iremos viendo mas curiosidades y características sobre el control TreeView 

4 comentarios en “Windows Presentation Foundation y Entity Framework, poderosa combinación I : Como surtir de datos a un control TreeView”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *