Vincular objeto ao WPF TreeView

Gostaria de saber como vincular um tipo de dados personalizado a umTreeView.

O tipo de dados é basicamente uma lista de objetos que contêm outras listas de matrizes. O acesso ficaria assim:

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

            }
        }
    }

Eu gostaria doTreeView para se parecer com isso:

DeviceGroup1

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

DeviceGroup2

 --> DeviceType1
      --DeviceInstance1
 --> DeviceType2

questionAnswers(2)

yourAnswerToTheQuestion