2013-05-14 5 views

Antwort

33

Die ItemTemplate dient zum Formatieren des Inhalts Ihres Datenelements. Sie verwenden es, um Datenfelder zu binden, Anzeigestrings zu formatieren und so weiter. Es legt fest, wie die Daten dargestellt werden.

Die ItemContainerStyle dient zum Formatieren des Containers des Datenelements. In einem Listenfeld wäre dies ein ListBoxItem. Das Styling wirkt sich auf das Auswahlverhalten oder die Hintergrundfarbe aus. Es bestimmt Stil und UX des Displays.

Die MSDN-Seite für ItemContainerStyle, oben verbunden ist, hat ein ziemlich gutes Beispiel zeigt einige Unterschiede:

<!--Use the ItemTemplate to set a DataTemplate to define 
     the visualization of the data objects. This DataTemplate 
     specifies that each data object appears with the Proriity 
     and TaskName on top of a silver ellipse.--> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <DataTemplate.Resources> 
     <Style TargetType="TextBlock"> 
      <Setter Property="FontSize" Value="18"/> 
      <Setter Property="HorizontalAlignment" Value="Center"/> 
     </Style> 
     </DataTemplate.Resources> 
     <Grid> 
     <Ellipse Fill="Silver"/> 
     <StackPanel> 
      <TextBlock Margin="3,3,3,0" 
        Text="{Binding Path=Priority}"/> 
      <TextBlock Margin="3,0,3,7" 
        Text="{Binding Path=TaskName}"/> 
     </StackPanel> 
     </Grid> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <!--Use the ItemContainerStyle property to specify the appearance 
     of the element that contains the data. This ItemContainerStyle 
     gives each item container a margin and a width. There is also 
     a trigger that sets a tooltip that shows the description of 
     the data object when the mouse hovers over the item container.--> 
    <ItemsControl.ItemContainerStyle> 
    <Style> 
     <Setter Property="Control.Width" Value="100"/> 
     <Setter Property="Control.Margin" Value="5"/> 
     <Style.Triggers> 
     <Trigger Property="Control.IsMouseOver" Value="True"> 
      <Setter Property="Control.ToolTip" 
        Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
          Path=Content.Description}"/> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 
    </ItemsControl.ItemContainerStyle> 
8

Die ItemContainerStyle nur ein Wrapper für die Datatemplate, so dass ein gemeinsames Element Stil angewendet werden kann, zu verschiedenen Datenlayouts.

Auch aus this answer to "DataTemplate vs ItemContainerStyle":

Sie können in der ItemTemplate alle Ihre Styling tun, aber die ItemContentStyle hat VisualStates, die die Opazität auf der Maus über/Behinderte/kontrollieren usw.

Wenn Sie möchten, Ändern Sie diese Opazitätsstatusänderungen, oder wenn Sie eine andere Containerform als ein Rechteck, z. B. ein Dreieck, möchten, müssen Sie den standardmäßigen ItemContainerStyle überschreiben.

+2

I * stark * schlage vor, Sie machen es immer deutlicher, dass der Text 'Sie Ihr Styling alles tun können, in der ItemTemplate aber Der ItemContentStyle verfügt über VisualStates, die die Deckkraft bei MouseOver/Disabled/Selected 'und' Wenn Sie diese Opazitätszustandsänderungen ändern möchten, oder wenn Sie eine andere Containerform als ein Rechteck, z. B. ein Dreieck, möchten muss den Standard-ItemContainerStyle überschreiben. "wurde von dem angegebenen Link kopiert; Sie haben in letzter Zeit Plagiate geplündert, was man als solche ansehen könnte. – LittleBobbyTables

+0

Deshalb habe ich den Link in meine Antwort eingefügt. Ich habe es deutlicher gemacht, dass dies jetzt von der Website genommen wird. – Jeff

+0

Wirklich ein Downvote? Ich referenziert den Link Mann ?? Bitte lesen Sie meine gesamte Post vor dem Downvote. – Jeff

Verwandte Themen