Vincular objeto a WPF TreeView

Me gustaría saber cómo vincular un tipo de datos personalizado a unTreeView.

El tipo de datos es básicamente una matriz de objetos que contienen otras listas de matrices. El acceso se vería así:

foreach (DeviceGroup dg in system.deviceGroups)
    {
        foreach (DeviceType dt in dg.deviceTypes)
        {
            foreach (DeviceInstance di in dt.deviceInstances)
            {

            }
        }
    }

Me gustaria elTreeView para parecerse a esto:

DeviceGroup1

 --> DeviceType1
      --DeviceInstance1
      --DeviceInstance2
 --> DeviceType2
      --DeviceInstance1

DeviceGroup2

 --> DeviceType1
      --DeviceInstance1
 --> DeviceType2

Respuestas a la pregunta(2)

Su respuesta a la pregunta