Вопрос

Я совершенно запутался этими 3 терминами, когда использовать какой? Каковы отношения, и они дети которых контролирует?

Правильно сказать, что это дерево:

ItemsControl> PerficationPrensenter> PerficationPanel

Это было полезно?

Решение

ItemsControl Концептуально контроль, который содержит предметы. Постарайтесь просто подумать об этом контроле как держателем для нуля или более объектов.

ItemsPresenter немного сложнее объяснить, но это часть ItemsControl Шаблон, который определит, где элементы размещены в нем. Шаблон ваших attemscontrol может быть всем, что вам нравится, скажите сетку с красивыми фотографиями вокруг него, внутри этого шаблона вы бы разместили 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 это панель (или контейнер), которая контролирует макет элементов в ваших элементахControl. Поэтому, если вы хотите, чтобы ваши товары, которые вы добавили в ваши элементыControl, чтобы отобразить горизонтальный способ, то панель yor Petes может просто быть стекPanel с его свойством ориентации, установленным на горизонтали.

Это все имеет смысл?

Другие советы

Я думаю, что это в значительной степени объясняет, как дела выполняются Silverlight: itemspaneltemplate Class:Указывает панель, что itemsPresenter создает для макета элементов элементовControl. ItemsPaneltemplate Class.

 <Style TargetType="local:myItemsControl">
     <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </Setter.Value>
     </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:myItemsControl">
              ....
               <ItemsPresenter />
              ....

В основном, ItemPreSenter (указанный в шаблоне) будет заменен тем, что указано в itemspaneltemplate.

Таким образом, шаблон может быть продлен, чтобы включить заголовок, и весь ребенок будет размещен под этим заголовком:

<Grid> <TextBlock Text="Header"/>   <ItemsPresenter /> </Grid>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top