itemscontrol nested templates wpf code example
Example: wpf nested itemscontrols
//<!--WPF: this nested ItemsControl allows for placement of items on a screen based on bound properties-->
//<!--A key factor to make this work is the Content="{Binding}" statement on line 33, as this links the items to the ItemControl's datacontext-->
//<!--Collections must be of type ObservableCollection<T> for XAML to register updates to the collection-->
<ItemsControl x:Name="outerIC" ItemsSource="{Binding Source={x:Static namespace:Class.CollectionProperty}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Top" Value="0" />
<Setter Property="Canvas.Left" Value="0" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding SomeCollectionPropertyInClass}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Top" Value="0" />
<Setter Property="Canvas.Left" Value="0" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Canvas>
<Button Canvas.Left="{Binding X}"
Canvas.Top="{Binding Y}"/>
</Canvas>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>