ItemsControl
es conceptualmente un control que alberga artículos. Intente simplemente pensar en este control como titular de cero o más objetos.
ItemsPresenter
es un poco más difícil de explicar, pero esto es parte de la plantilla ItemsControl
que definirá dónde se colocan los elementos dentro de ella. La plantilla de ItemsControl puede ser lo que quieras, por ejemplo, una cuadrícula con algunas imágenes bonitas, dentro de esta plantilla, colocarías el ItemsPresenter
donde quieras que tus artículos estén, digamos justo en el medio de tu grilla. (Este ejemplo se toma de msdn y simplificado para facilitar la lectura)
<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>
El ItemsPanel
es el panel (o contenedor) que controla la disposición de los artículos en su ItemsControl. Por lo tanto, si desea que los elementos que ha agregado a su ItemsControl se muestren de manera horizotal, su panel de elementos simplemente podría ser un StackPanel con su propiedad de Orientación establecida en Horizontal.
¿Todo esto tiene sentido?
Si pudiera dar un ejemplo de los 3 en uso .. será grande. El ejemplo de msdn que encontré antes no es tan bueno (es decir, es una mierda). ¿De modo que creo que el presentador de elementos está desplazando la plantilla de control que puede contener un panel de elementos para contener más elementos dentro de ControlTemplate? – bcm
¿es esta una pregunta conceptual o tiene problemas para tratar de crear su propio ItemsControl? – Mark
conceptual, pero me gustaría entenderlo bien. – bcm