如果容器(ListBox
等TreeView
)ItemsSource
接受一组可能属于不同类的元素,我如何为它们创建不同的表示?例如,我有ObservableCollection<Animal>
,但它可能包含类的实例等Cat
。Dog
有人可能拥有臂展的属性,有人可能拥有跳跃的高度,这一切自然不包含在基类中Animal
。
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<!-- здесь содержимое должно быть типозависимым -->
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我不明白 ItemTemplate 如何检查类,输出可能因类而异的必填字段。如果 XAML 中有条件块,那么事情会更简单(在我看来)。
您可以使用集合
DataTemplates
来匹配ViewModel
和View
,例如 yListBox
(也可以 yUserControl
):那么你就不需要自己安装了
ListBox
ItemTemplate
。