ItemsControl.ItemContainerStyle Proprietà

Definizione

Ottiene o imposta l'oggetto Style applicato all'elemento contenitore generato per ogni elemento.

public:
 property System::Windows::Style ^ ItemContainerStyle { System::Windows::Style ^ get(); void set(System::Windows::Style ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.Style ItemContainerStyle { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemContainerStyle : System.Windows.Style with get, set
Public Property ItemContainerStyle As Style

Valore della proprietà

Oggetto Style applicato all'elemento contenitore generato per ogni elemento. Il valore predefinito è null.

Attributi

Esempio

Nell'esempio seguente viene illustrato come utilizzare questa proprietà. Si considerino i seguenti dati associati ListBoxa :

<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
         Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>

Per creare uno stile per gli elementi che contengono gli elementi di dati, creare uno ListBoxItem stile, come illustrato nell'esempio seguente. Lo stile viene applicato a tutti gli ListBoxItem elementi all'interno dell'ambito in cui è definito lo stile.

<Style TargetType="ListBoxItem">
  <Setter Property="Opacity" Value="0.5" />
  <Setter Property="MaxHeight" Value="75" />
  <Style.Triggers>
    <Trigger Property="IsSelected" Value="True">
      <Trigger.Setters>
        <Setter Property="Opacity" Value="1.0" />
      </Trigger.Setters>
    </Trigger>
    <EventTrigger RoutedEvent="Mouse.MouseEnter">
      <EventTrigger.Actions>
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation
              Duration="0:0:0.2"
              Storyboard.TargetProperty="MaxHeight"
              To="90"  />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger.Actions>
    </EventTrigger>
    <EventTrigger RoutedEvent="Mouse.MouseLeave">
      <EventTrigger.Actions>
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation
              Duration="0:0:1"
              Storyboard.TargetProperty="MaxHeight"  />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger.Actions>
    </EventTrigger>
  </Style.Triggers>
</Style>

ListBoxItem è l'elemento contenitore per il ListBox controllo . Pertanto, un'alternativa alla precedente consiste nell'impostare la ItemContainerStyle proprietà dell'oggetto ListBox sullo stile definito. A tale scopo, assegnare allo ListBoxItem stile un oggetto x:Key in modo che sia disponibile come risorsa:

<Style TargetType="ListBoxItem" x:Key="ContainerStyle">
  <Setter Property="Opacity" Value="0.5" />
  <Setter Property="Opacity" Value="0.5" />
  <Setter Property="MaxHeight" Value="75" />
  <Style.Triggers>
    <Trigger Property="IsSelected" Value="True">
      <Setter Property="Opacity" Value="1.0" />
    </Trigger>

Impostare quindi la ItemContainerStyle proprietà sulla risorsa, come nell'esempio seguente:

<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
         ItemContainerStyle="{StaticResource ContainerStyle}" 
         Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>

Entrambi gli scenari precedenti producono lo stesso risultato. Tuttavia, uno dei vantaggi di rendere lo stile disponibile come risorsa è che è possibile riutilizzare lo stile. L'impostazione della ItemContainerStyle proprietà in modo esplicito può anche garantire una maggiore leggibilità.

L'esempio seguente è progettato per illustrare la funzione dei diversi stili e la creazione di modelli delle proprietà correlate fornite da ItemsControl. In ItemsControl questo esempio è associato a una raccolta di Task oggetti . A scopo dimostrativo, gli stili e i modelli in questo esempio sono tutti dichiarati incorporati.

<ItemsControl Margin="10"
              ItemsSource="{Binding Source={StaticResource myTodoList}}">
  <!--The ItemsControl has no default visual appearance.
      Use the Template property to specify a ControlTemplate to define
      the appearance of an ItemsControl. The ItemsPresenter uses the specified
      ItemsPanelTemplate (see below) to layout the items. If an
      ItemsPanelTemplate is not specified, the default is used. (For ItemsControl,
      the default is an ItemsPanelTemplate that specifies a StackPanel.-->
  <ItemsControl.Template>
    <ControlTemplate TargetType="ItemsControl">
      <Border BorderBrush="Aqua" BorderThickness="1" CornerRadius="15">
        <ItemsPresenter/>
      </Border>
    </ControlTemplate>
  </ItemsControl.Template>
  <!--Use the ItemsPanel property to specify an ItemsPanelTemplate
      that defines the panel that is used to hold the generated items.
      In other words, use this property if you want to affect
      how the items are laid out.-->
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <!--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 Priority
      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>
</ItemsControl>

Lo screenshot seguente mostra l'esempio dopo il rendering:

Screenshot di esempio itemsControl screenshot dell'esempio itemsControl

Altre due proprietà correlate allo stile di ItemsControl che non sono illustrate di seguito sono GroupStyle e GroupStyleSelector.

Commenti

Utilizzare questa proprietà o la ItemContainerStyleSelector proprietà per impostare uno stile per influire sull'aspetto degli elementi che contengono gli elementi di dati. Ad esempio, per ListBox, i contenitori generati sono ListBoxItem controlli; per ComboBox, sono ComboBoxItem controlli.

Offre ItemsControl una grande flessibilità per la personalizzazione visiva e offre molti stili e proprietà di creazione di modelli. Per influire sul layout degli elementi, utilizzare la ItemsPanel proprietà . Se si usa il raggruppamento sul controllo, è possibile utilizzare la GroupStyle proprietà o GroupStyleSelector . Per specificare la visualizzazione degli oggetti dati, utilizzare la ItemTemplate proprietà o ItemTemplateSelector . Per altre informazioni su quando specificare un ItemTemplateoggetto , vedere Cenni preliminari sulla creazione di modelli di dati.

Uso della sintassi XAML per gli attributi

<object ItemContainerStyle="ResourceExtension StyleResourceKey"/>

Valori XAML

ResourceExtension Uno dei seguenti: StaticResourceo DynamicResource. A meno che gli stili stessi non contengano riferimenti a potenziali riferimenti in fase di esecuzione, ad esempio risorse di sistema o preferenze utente, StaticResource è in genere consigliabile fare riferimento a uno stile per le prestazioni.

StyleResourceKeyx:Key valore stringa che fa riferimento allo stile richiesto come risorsa.

Informazioni proprietà di dipendenza

Campo Identificatore ItemContainerStyleProperty
Proprietà dei metadati impostate su true Nessuno

Si applica a

Vedi anche