Ответ 1
ItemsControl
концептуально является элементом управления, в котором хранятся элементы. Попробуйте просто подумать об этом контроле как о держателе для ноля или более объектов.
ItemsPresenter
немного сложнее объяснить, но это часть шаблона ItemsControl
, который определяет, где элементы помещаются внутри него. Ваш шаблон ItemsControl может быть любым, например Grid с некоторыми хорошими изображениями вокруг него, внутри этого шаблона вы бы разместили ItemsPresenter
, где бы вы ни захотели, чтобы ваши объекты были, скажем, прямо посередине вашей сетки. (этот пример взят из msdn и упрощен для удобства чтения)
<Style TargetType="HeaderedItemsControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type HeaderedItemsControl}">
<Grid>
<Rectangle Stroke="Black" Fill="Red"/>
<ItemsPresenter Margin="2,0,0,0"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ItemsPanel
- это панель (или контейнер), которая управляет расположением элементов в ItemsControl. Поэтому, если вы хотите, чтобы ваши элементы, которые вы добавили в свой элемент ItemsControl, отображались горизонтальным образом, тогда панель элементов yor может быть просто StackPanel с свойством Orientation, установленным в Horizontal.
Это все имеет смысл?