ItemsControl.ItemContainerStyle Свойство

Определение

Получает или задает объект Style, применяемый к элементу контейнера, создаваемому для каждого элемента.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

Значение свойства

Объект Style, применяемый к элементу контейнера, создаваемому для каждого элемента.The Style that is applied to the container element generated for each item. Значение по умолчанию — null.The default is null.

Атрибуты

Примеры

В следующем примере показано, как использовать это свойство.The following example demonstrates how to use this property. Рассмотрим следующие привязки к ListBoxданным:Consider the following data-bound ListBox:

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

Чтобы создать стиль для элементов, содержащих элементы данных, создайте ListBoxItem стиль, как показано в следующем примере.To create a style for the elements that contain the data items, create a ListBoxItem style, as shown in the following example. Стиль применяется ко всем ListBoxItem элементам в области, в которой определен стиль.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>

— Это элемент контейнера ListBox для элемента управления. ListBoxItemThe ListBoxItem is the container element for the ListBox control. Таким образом, в качестве альтернативы предшествующей предыдущей версии ItemContainerStyle для свойства ListBox объекта задается определенный стиль.Therefore, an alternative to the preceding is to set the ItemContainerStyle property of the ListBox to the defined style. Для этого присвойте ListBoxItem x:Key стилю значение, чтобы оно было доступно в качестве ресурса: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>

Затем задайте ItemContainerStyle для свойства ресурс, как показано в следующем примере: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"/>

Оба приведенных выше сценария приводят к одному и тому же результату.Both of the preceding scenarios produce the same result. Однако одним из преимуществ сделать стиль доступным в качестве ресурса является возможность повторного использования стиля.However, one of the advantages of making the style available as a resource is that you can reuse the style. Явное ItemContainerStyle задание свойства также может обеспечить более удобочитаемость.Setting the ItemContainerStyle property explicitly can also provide greater readability.

Полный пример см. в разделе Общие сведения о примерах стилей и шаблонов.For the complete example, see Introduction to Styling and Templating Sample.

Следующий пример предназначен для иллюстрации функции различных свойств, связанных со стилями и шаблонами, ItemsControlпредоставляемых.The following example is designed to illustrate the function of the different styling and templating related properties provided by the ItemsControl. В этом примере Привязка выполняется к Task коллекции объектов. ItemsControlThe ItemsControl in this example is bound to a collection of Task objects. Для демонстрационных целей все стили и шаблоны в этом примере объявлены встроенными.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>

Ниже приведен снимок экрана примера при его просмотре:The following is a screenshot of the example when it is rendered:

![Снимок экрана примера ItemsControl] (~/add/media/databinding-itemscontrolproperties.png "Снимок экрана примера ItemsControl")ItemsControl example screenshot

Два других свойства, относящиеся к ItemsControl стилю, не показаны здесь, — GroupStyle и. GroupStyleSelectorTwo other style-related properties of the ItemsControl that are not shown here are GroupStyle and GroupStyleSelector.

Комментарии

Это свойство или ItemContainerStyleSelector свойство используется для установки стиля, который влияет на внешний вид элементов, содержащих элементы данных.You use this property or the ItemContainerStyleSelector property to set a style to affect the appearance of the elements that contain the data items. Например, для ListBoxсозданные контейнеры — ListBoxItem это элементы управления. для ComboBox, они являются ComboBoxItem элементами управления.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls.

ItemsControl Предоставляет большую гибкость для визуальной настройки и предоставляет множество свойств стилизации и шаблонов.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. Чтобы изменить макет элементов, используйте ItemsPanel свойство.To affect the layout of the items, use the ItemsPanel property. Если вы используете группирование в элементе управления, можно использовать GroupStyle свойство или. GroupStyleSelectorIf you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property. Чтобы указать визуализацию объектов данных, используйте ItemTemplate свойство или. ItemTemplateSelectorTo specify the visualization of data objects, use the ItemTemplate or ItemTemplateSelector property. Дополнительные сведения о том ItemTemplate, когда следует указывать, см. в разделе Общие сведения о шаблонах данных.For more information about when to specify an ItemTemplate, see Data Templating Overview.

Использование атрибута XAMLXAML Attribute Usage

<object ItemContainerStyle="ResourceExtension StyleResourceKey"/>  

Значения XAMLXAML Values

ресаурцеекстенсионResourceExtension
Один из следующих элементов: StaticResourceили. DynamicResourceOne of the following: StaticResource, or DynamicResource. Если сами стили не содержат ссылок на потенциальные ссылки времени выполнения, такие как системные ресурсы или пользовательские настройки StaticResource , для повышения производительности обычно рекомендуется использовать ссылку на стиль.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.

стилересаурцекэйStyleResourceKey
x:KeyСтроковое значение, ссылающееся на стиль, запрашиваемый в качестве ресурса.x:Key string value referring to the style being requested as a resource.

Сведения о свойстве зависимостейDependency Property Information

Поле идентификатораIdentifier field ItemContainerStyleProperty
Свойства метаданных, для которых задано значениеtrueMetadata properties set to true НетNone

Применяется к

Дополнительно