ItemsControl.ItemContainerStyle Propriedade

Definição

Obtém ou define o Style aplicado ao elemento do contêiner gerado para cada item.Gets or sets the Style that is applied to the container element generated for each item.

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; }
member this.ItemContainerStyle : System.Windows.Style with get, set
Public Property ItemContainerStyle As Style

Valor da propriedade

O Style aplicado ao elemento do contêiner gerado para cada item.The Style that is applied to the container element generated for each item. O padrão é null.The default is null.

Atributos

Exemplos

O exemplo a seguir demonstra como usar essa propriedade.The following example demonstrates how to use this property. Considere os seguintes ListBoxassociados a dados:Consider the following data-bound ListBox:

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

Para criar um estilo para os elementos que contêm os itens de dados, crie um estilo de ListBoxItem, conforme mostrado no exemplo a seguir.To create a style for the elements that contain the data items, create a ListBoxItem style, as shown in the following example. O estilo é aplicado a todos os elementos de ListBoxItem dentro do escopo em que o estilo é definido.The style is applied to all ListBoxItem elements within the scope the style is defined in.

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

O ListBoxItem é o elemento de contêiner para o controle de ListBox.The ListBoxItem is the container element for the ListBox control. Portanto, uma alternativa ao anterior é definir a propriedade ItemContainerStyle do ListBox como o estilo definido.Therefore, an alternative to the preceding is to set the ItemContainerStyle property of the ListBox to the defined style. Para fazer isso, dê ao estilo de ListBoxItem um x:Key para que ele esteja disponível como um recurso:To do that, give the ListBoxItem style an x:Key so it is available as a resource:

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

Em seguida, defina a propriedade ItemContainerStyle como o recurso, como no exemplo a seguir:Next, set the ItemContainerStyle property to the resource, as in the following example:

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

Os dois cenários anteriores produzem o mesmo resultado.Both of the preceding scenarios produce the same result. No entanto, uma das vantagens de tornar o estilo disponível como um recurso é que você pode reutilizar o estilo.However, one of the advantages of making the style available as a resource is that you can reuse the style. Definir a propriedade ItemContainerStyle explicitamente também pode fornecer maior legibilidade.Setting the ItemContainerStyle property explicitly can also provide greater readability.

Para obter o exemplo completo, consulte introdução ao exemplo de estilo e modelagem.For the complete example, see Introduction to Styling and Templating Sample.

O exemplo a seguir foi projetado para ilustrar a função do estilo diferente e as propriedades relacionadas ao Templating fornecidas pelo ItemsControl.The following example is designed to illustrate the function of the different styling and templating related properties provided by the ItemsControl. O ItemsControl neste exemplo está associado a uma coleção de objetos Task.The ItemsControl in this example is bound to a collection of Task objects. Para fins de demonstração, os estilos e modelos deste exemplo são declarados como embutidos.For demonstration purposes, the styles and templates in this example are all declared inline.

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

Segue uma captura de tela do exemplo quando é renderizado:The following is a screenshot of the example when it is rendered:

Captura de tela de exemplo de ItemsControlItemsControl example screenshot

Duas outras propriedades relacionadas a estilo dos ItemsControl que não são mostradas aqui são GroupStyle e GroupStyleSelector.Two other style-related properties of the ItemsControl that are not shown here are GroupStyle and GroupStyleSelector.

Comentários

Você usa essa propriedade ou a propriedade ItemContainerStyleSelector para definir um estilo para afetar a aparência dos elementos que contêm os itens de dados.You use this property or the ItemContainerStyleSelector property to set a style to affect the appearance of the elements that contain the data items. Por exemplo, para ListBox, os contêineres gerados são controles de ListBoxItem; por ComboBox, eles são ComboBoxItem controles.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls.

O ItemsControl fornece grande flexibilidade para a personalização visual e fornece muitas propriedades de estilo e modelagem.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. Para afetar o layout dos itens, use a propriedade ItemsPanel.To affect the layout of the items, use the ItemsPanel property. Se você estiver usando o agrupamento em seu controle, poderá usar a propriedade GroupStyle ou GroupStyleSelector.If you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property. Para especificar a visualização de objetos de dados, use a propriedade ItemTemplate ou ItemTemplateSelector.To specify the visualization of data objects, use the ItemTemplate or ItemTemplateSelector property. Para obter mais informações sobre quando especificar um ItemTemplate, consulte visão geral de modelagem de dados.For more information about when to specify an ItemTemplate, see Data Templating Overview.

Uso do Atributo XAMLXAML Attribute Usage

<object ItemContainerStyle="ResourceExtension StyleResourceKey"/>  

Valores XAMLXAML Values

ResourceExtensionResourceExtension
Um dos seguintes: StaticResourceou DynamicResource.One of the following: StaticResource, or DynamicResource. A menos que os próprios estilos contenham referências a possíveis referências de tempo de execução, como recursos do sistema ou preferências do usuário, StaticResource referência a um estilo é geralmente recomendada para o desempenho.Unless the styles themselves contain references to potential run-time references such as system resources or user preferences, StaticResource reference to a style is usually recommended for performance.

StyleResourceKeyStyleResourceKey
x:Key valor da cadeia de caracteres referindo-se ao estilo que está sendo solicitado como um recurso.x:Key string value referring to the style being requested as a resource.

Informações de Propriedade de DependênciaDependency Property Information

Campo de identificadorIdentifier field ItemContainerStyleProperty
Propriedades de metadados definidas como trueMetadata properties set to true NenhumNone

Aplica-se a

Veja também