Почему 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, за которым следует синий прямоугольник, за которым следует красный прямоугольник.

9
задан Drew 1 October 2010 в 21:37
поделиться