У меня есть список, содержащий объекты, следующие за этой структурой. Это не настоящие классы, с которыми я работаю, но должен объяснить концепцию.WPF HierarchicalDataTemplate & ItemsControl
КЛАССЫ
public class BaseType{}
public class TypeA : BaseType{}
public class TypeB: BaseType
{
public List<TypeA> TypeAList { get; private set; }
}
Список, который связывает ItemsControl в это List<BaseType>
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, отображаемом в Ite msControl, вместо этого я вижу только объекты TypeB, отображаемые со стилями, определенными для HierarchicalDataTemplate. Я использовал тот же шаблон данных в элементе управления TreeView, где он отображает дочерние элементы в порядке.
- Можете ли вы не использовать Иерархический шаблон DATATemplate в ItemsControl?
- Как вы собираетесь показывать родительские отношения с дочерними элементами в ItemsControl?