ItemsControl.ItemContainerStyle Właściwość

Definicja

Pobiera lub ustawia Style element, który jest stosowany do elementu kontenera wygenerowanego dla każdego elementu.

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

Wartość właściwości

Element Style , który jest stosowany do elementu kontenera wygenerowanego dla każdego elementu. Wartość domyślna to null.

Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak używać tej właściwości. Rozważmy następujące dane powiązane ListBox:

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

Aby utworzyć styl dla elementów zawierających elementy danych, utwórz ListBoxItem styl, jak pokazano w poniższym przykładzie. Styl jest stosowany do wszystkich ListBoxItem elementów w zakresie, w których jest zdefiniowany styl.

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

Element ListBoxItem jest elementem kontenera dla kontrolki ListBox . W związku z tym alternatywą dla powyższego jest ustawienie ItemContainerStyle właściwości ListBox obiektu na zdefiniowany styl. W tym celu nadaj ListBoxItem stylowi x:Key , aby był dostępny jako zasób:

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

Następnie ustaw ItemContainerStyle właściwość na zasób, jak w poniższym przykładzie:

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

Oba powyższe scenariusze generują ten sam wynik. Jednak jedną z zalet udostępniania stylu jako zasobu jest możliwość ponownego użycia stylu. Jawne ItemContainerStyle ustawienie właściwości może również zapewnić większą czytelność.

Kompletny przykład można znaleźć w temacie Introduction to Styling and Templating Sample (Wprowadzenie do stylów i tworzenia szablonów).

Poniższy przykład został zaprojektowany w celu zilustrowania funkcji różnych właściwości powiązanych stylów i tworzenia szablonów udostępnianych przez program ItemsControl. Element ItemsControl w tym przykładzie jest powiązany z kolekcją Task obiektów. W celach demonstracyjnych wszystkie style i szablony w tym przykładzie są zadeklarowane w tekście.

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

Poniżej przedstawiono zrzut ekranu przedstawiający przykład podczas renderowania:

Przykładowy zrzut ekranu ItemsControl — przykładowy zrzut ekranu itemsControl

Dwie inne właściwości powiązane ze stylem elementu ItemsControl , które nie są tutaj wyświetlane, to GroupStyle i GroupStyleSelector.

Uwagi

Ta właściwość lub ItemContainerStyleSelector właściwość służy do ustawiania stylu, aby wpływać na wygląd elementów zawierających elementy danych. Na przykład w przypadku ListBoxkontenerów generowanych przez ListBoxItem program są kontrolkami; dla ComboBoxelementu są ComboBoxItem to kontrolki.

Zapewnia ItemsControl dużą elastyczność dostosowywania wizualizacji i zapewnia wiele właściwości stylów i tworzenia szablonów. Aby wpłynąć na układ elementów, użyj ItemsPanel właściwości . Jeśli używasz grupowania w kontrolce, możesz użyć GroupStyle właściwości lub GroupStyleSelector . Aby określić wizualizację obiektów danych, użyj ItemTemplate właściwości lub ItemTemplateSelector . Aby uzyskać więcej informacji o tym, kiedy określić element ItemTemplate, zobacz Omówienie tworzenia szablonów danych.

Użycie atrybutu języka XAML

<object ItemContainerStyle="ResourceExtension StyleResourceKey"/>  

Wartości XAML

Rozszerzenie zasobu
Jedno z następujących elementów: StaticResource, lub DynamicResource. Jeśli style same w sobie nie zawierają odwołań do potencjalnych odwołań w czasie wykonywania, takich jak zasoby systemowe lub preferencje użytkownika, StaticResource odwołanie do stylu jest zwykle zalecane do wydajności.

StyleResourceKey
x:Key wartość ciągu odwołująca się do żądanego stylu jako zasobu.

Informacje dotyczące właściwości zależności

Pole identyfikatora ItemContainerStyleProperty
Właściwości metadanych ustawione na true Brak

Dotyczy

Zobacz też