如果容器(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):那么你就不需要自己安装了
ListBoxItemTemplate。