Почему ItemsControl не использует мой ItemTemplate?

Я могу использовать ItemTemplate внутри ItemsControl для отображения элементов в определенном формате. Однако, если один из элементов в ItemsControl, скажем, представляет собой, например, TextBox, этот TextBox отображается, а не экземпляр ItemsTemplate. Из того, что я могу сказать, это верно для любого FrameworkElement. Это предполагаемое поведение для ItemsControl или я что-то делаю неправильно?

Пример:

<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>

Я ожидал, что это покажет четыре синих прямоугольника. Я думал, что каждый раз, когда ItemTemplate был определен, каждый элемент в коллекции отображается как экземпляр шаблона. Однако в этом случае отображается следующее: синий прямоугольник, за которым следует TextBox, за которым следует синий прямоугольник, за которым следует красный прямоугольник.

Ответы на вопрос(2)

Ваш ответ на вопрос