У меня есть список, содержащий объекты, которые следуют этой структуре. Это не настоящие классы, с которыми я работаю, но они должны объяснить концепцию.
КЛАССЫ
public class BaseType{}
public class TypeA : BaseType{}
public class TypeB: BaseType
{
public List<TypeA> TypeAList { get; private set; }
}
Список, к которому привязывается ItemsControl: List<BaseType>
1012 * XAML *
<ItemsControl>
<ItemsControl.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:TypeB}" ItemsSource = "{Binding Path=TypeAList}">
<DataTemplate.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="18"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</DataTemplate.Resources>
<Grid>
<Ellipse Fill="Gold"/>
<StackPanel>
<TextBlock Margin="3,3,3,0"
Text="{Binding Path=Description}"/>
<TextBlock Margin="3,0,3,7"
Text="{Binding Path=Name}"/>
</StackPanel>
</Grid>
</HierarchicalDataTemplate>
<ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Теперь я хотел бы увидеть все объекты TypeA, найденные в свойстве объекта TypeB, которые будут отображаться в ItemsControl, вместо этого я вижу только объекты TypeB, отображаемые со стилями, определенными для HierarchicalDataTemplate. я использовал ту же табличку данных в элементе управления TreeView, где он отлично отображает дочерние элементы.
- Разве вы не можете использовать HierarchicalDataTemplate в ItemsControl?
- Как вы отображаете отношения родитель-потомок в ItemsControl?