ItemsControl.ItemContainerStyle Eigenschaft

Definition

Ruft den Style ab, der auf das für jedes Element erstellte Containerelement angewendet wird, oder legt diesen fest.

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

Eigenschaftswert

Der Style, der auf das für jedes Element erstellte Containerelement angewendet wird. Der Standardwert ist null.

Attribute

Beispiele

Im folgenden Beispiel wird die Verwendung dieser Eigenschaft veranschaulicht. Betrachten Sie den folgenden datengebundenen ListBox:

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

Um einen Stil für die Elemente zu erstellen, die die Datenelemente enthalten, erstellen Sie eine ListBoxItem Formatvorlage, wie im folgenden Beispiel gezeigt. Die Formatvorlage wird auf alle ListBoxItem Elemente innerhalb des Bereichs angewendet, in dem die Formatvorlage definiert ist.

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

ist ListBoxItem das Containerelement für das ListBox Steuerelement. Daher besteht eine Alternative zum vorherigen darin, die ItemContainerStyle -Eigenschaft von ListBox auf den definierten Stil festzulegen. Um dies zu tun, geben Sie dem ListBoxItem Stil einen wert x:Key , damit er als Ressource verfügbar ist:

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

Legen Sie als Nächstes die ItemContainerStyle -Eigenschaft auf die Ressource fest, wie im folgenden Beispiel gezeigt:

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

Beide der vorherigen Szenarien führen zu demselben Ergebnis. Einer der Vorteile der Bereitstellung des Stils als Ressource besteht jedoch darin, dass Sie den Stil wiederverwenden können. Das explizite Festlegen der ItemContainerStyle Eigenschaft kann auch eine bessere Lesbarkeit bieten.

Das vollständige Beispiel finden Sie unter Einführung in das Formatieren und Vorlagenbeispiel.

Das folgende Beispiel soll die Funktion der verschiedenen stil- und vorlagenbezogenen Eigenschaften veranschaulichen, die ItemsControlvon bereitgestellt werden. In ItemsControl diesem Beispiel ist an eine Auflistung von Task -Objekten gebunden. Zu Demonstrationszwecken werden die Formate und die Vorlagen in diesem Beispiel inline deklariert.

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

Im Folgenden sehen Sie ein Bildschirmfoto des Beispiels nach dem Rendern:

ItemsControl-Beispielscreenshot

Zwei weitere Stileigenschaften von ItemsControl, die hier nicht gezeigt werden, sind GroupStyle und GroupStyleSelector.

Hinweise

Sie verwenden diese Eigenschaft oder die ItemContainerStyleSelector -Eigenschaft, um eine Formatvorlage festzulegen, die sich auf die Darstellung der Elemente auswirkt, die die Datenelemente enthalten. Beispielsweise ListBoxsind ListBoxItem die generierten Container Steuerelemente, für ComboBoxsind sie ComboBoxItem Steuerelemente.

Bietet ItemsControl eine große Flexibilität bei der visuellen Anpassung und bietet viele Formatierungs- und Vorlageneigenschaften. Verwenden Sie ItemsPanel die -Eigenschaft, um das Layout der Elemente zu beeinflussen. Wenn Sie die Gruppierung für Ihr Steuerelement verwenden, können Sie die GroupStyle - oder GroupStyleSelector -Eigenschaft verwenden. Verwenden Sie die - oder ItemTemplateSelector -Eigenschaft, um die ItemTemplate Visualisierung von Datenobjekten anzugeben. Weitere Informationen dazu, wann angegeben ItemTemplatewerden soll, finden Sie unter Übersicht über Datenvorlagen.

Verwendung von XAML-Attributen

<object ItemContainerStyle="ResourceExtension StyleResourceKey"/>  

XAML-Werte

ResourceExtension
Einer der folgenden: StaticResource, oder DynamicResource. Sofern die Stile selbst Keine Verweise auf potenzielle Laufzeitverweise wie Systemressourcen oder Benutzereinstellungen enthalten, StaticResource wird der Verweis auf eine Formatvorlage für die Leistung in der Regel empfohlen.

StyleResourceKey
x:Key Zeichenfolgenwert, der sich auf das format bezieht, das als Ressource angefordert wird.

Informationen zur Abhängigkeitseigenschaft

Bezeichnerfeld ItemContainerStyleProperty
Metadateneigenschaften auf true festgelegt Keine

Gilt für:

Weitere Informationen