使用 List<UIElement>
作为 ItemsControl
的 ItemsSource
会导致不应用 DataTemplate
,这是因为 DataTemplate
主要用于将数据对象与 UI 元素进行绑定,并在 ItemsControl
中自动生成多个相同的 UI 元素。而 List<UIElement>
已经包含了 UI 元素,因此不需要使用 DataTemplate
进行绑定。
如果您希望使用 DataTemplate
来定义 ItemsControl
中的 UI 元素,则应该使用 List<T>
作为 ItemsSource
,其中 T
是数据对象的类型。这样,DataTemplate
就可以将数据对象绑定到 UI 元素上,并自动生成多个相同的 UI 元素。
例如,如果您有一个 List<Person>
作为数据源,则可以使用以下代码来定义 ItemsControl
和 DataTemplate
:
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
在这个例子中,Persons
是一个 List<Person>
类型的数据源,DataTemplate
将 Person
对象绑定到一个包含两个 TextBlock
的 StackPanel
上。ItemsControl
会自动生成多个相同的 UI 元素,每个元素都包含一个 Person
对象的信息。
领取专属 10元无门槛券
手把手带您无忧上云