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.
Это все имеет смысл?
Если бы вы могли дать пример всех 3 в использовании .. будет большим. Пример msdn, с которым я сталкивался раньше, не так уж хорош (т. Е. Он чертовски сосет). Итак, я думаю, что itemspresenter меняет ControlTemplate, который может содержать ItemPanel для хранения большего количества элементов в ControlTemplate? – bcm
- это концептуальный вопрос или у вас возникли проблемы с попыткой создать свой собственный элемент ItemsControl? – Mark
концептуально, но просто хотел бы это понять. – bcm