我可以在 ItemsControl 中使用 ItemTemplate 以特定格式呈现项目。但是,如果 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,然后是一个蓝色矩形,然后是一个红色矩形。