Frage

Ich bin völlig durch diese drei Begriffe verwirrt, wenn zu verwenden, welche? Was ist die Beziehung, und sie sind Kinder, von denen Kontrollen?

Ist es richtig zu sagen, dies ist der Baum:

Items> Itemspresenter> Itemspanel

War es hilfreich?

Lösung

ItemsControl ist vom Konzept her eine Kontrolle, dass die Häuser Artikel. Versuchen Sie einfach denken Sie an dieser Steuerung als Halter für Null oder mehr Objekte aus.

ItemsPresenter ist etwas schwieriger zu erklären, aber das ist Teil der ItemsControl Vorlage, die definieren, wo die Elemente in ihrem platziert werden. Ihre Items der Vorlage kann um es mit einigen schönen Bildern, was Sie wollen, sagen wir ein Gitter sein, innerhalb dieser Vorlage, würden Sie die ItemsPresenter platzieren, wo immer Sie Ihre Artikel sein wollen, sagen genau in der Mitte des Rasters. (Dieses Beispiel wird genommen von Msdn und vereinfachte für eine einfache Lesung)

<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>

Die ItemsPanel ist die Platte (oder Container), dass die Kontrollen des Layout des Artikels im Itemscontrol. Also, wenn Sie Ihre Einzelteile wünschen, dass Sie Ihre Itemscontrol-Anzeige in einer horizotal Weise hinzugefügt haben, dann Panel yor Artikel könnten einfach ein Stackpanel mit seiner Ausrichtung Eigenschaft auf Horizontal.

Das alles einen Sinn?

Andere Tipps

Ich denke, dass dies ziemlich viel erklärt, wie die Dinge von Silverlight getan werden: Itemspaneltemplate-Klasse: Gibt das Gremium, dass die Itemspresenter für das Layout der Elemente eines Itemscontrol erstellt. Itemspaneltemplate Klasse

 <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 />
              ....

Grundsätzlich ist der ItemPresenter (in der Vorlage angegeben) wird mit ersetzt werden, was auch immer in der Itemspaneltemplate angegeben ist.

So kann die Vorlage erweitert werden, um einen Header enthalten und alle Kind wird unter dieser Überschrift gesetzt werden:

<Grid> <TextBlock Text="Header"/>   <ItemsPresenter /> </Grid>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top