Por que o ItemsControl não usa meu ItemTemplate?

Eu sou capaz de usar um ItemTemplate dentro de um ItemsControl para processar itens em um formato específico. No entanto, se um dos itens no ItemsControl for, digamos, um TextBox, esse TextBox será renderizado em vez de uma instância do ItemsTemplate. Pelo que sei, isso é verdade para qualquer FrameworkElement. Esse é o comportamento pretendido para um ItemsControl ou estou fazendo algo incorretamente?

Um exemplo:

<ItemsControl>
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Grid Margin="5">
        <Rectangle Fill="Blue" Height="20" Width="20" />
      </Grid>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
  <ItemsControl.Items>
    <sys:Object />
    <TextBox />
    <sys:Object />
    <Rectangle Fill="Red" Height="20" Width="20" />
  </ItemsControl.Items>
</ItemsControl>

Eu esperava que isso exibisse quatro retângulos azuis. Eu pensei que sempre que um ItemTemplate foi definido, cada item da coleção é renderizado como uma instância do modelo. No entanto, nesse caso, o seguinte é renderizado: um retângulo azul seguido por um TextBox seguido de um retângulo azul seguido de um retângulo vermelho.

questionAnswers(2)

yourAnswerToTheQuestion