ItemsControl.ItemContainerStyle Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает Style , которое применяется к элементу контейнера, созданному для каждого элемента.
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
Значение свойства
Применяется Style к элементу контейнера, созданному для каждого элемента. Значение по умолчанию — null.
- Атрибуты
Примеры
В следующем примере показано, как использовать это свойство. Рассмотрим следующие привязки ListBoxк данным:
<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>
Чтобы создать стиль для элементов, содержащих элементы данных, создайте ListBoxItem стиль, как показано в следующем примере. Стиль применяется ко всем ListBoxItem элементам в области, в который определяется стиль.
<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 элемент контейнера для ListBox элемента управления. Таким образом, альтернативой предыдущему является установка ItemContainerStyle свойства определенного ListBox стиля. Для этого укажите ListBoxItem стиль x:Key , чтобы он был доступен как ресурс:
<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 для свойства ресурс, как показано в следующем примере:
<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
ItemContainerStyle="{StaticResource ContainerStyle}"
Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>
Оба предыдущих сценария приводят к одному результату. Однако одним из преимуществ создания стиля в качестве ресурса является то, что вы можете повторно использовать стиль. Явное ItemContainerStyle задание свойства также может обеспечить большую удобочитаемость.
В следующем примере показано, как проиллюстрировать функцию различных свойств стилей и шаблонов, предоставляемых этим элементом ItemsControl. В ItemsControl этом примере привязан к коллекции Task объектов. В целях демонстрации стили и шаблоны в этом примере объявляются встроенными.
<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>
Ниже приведен снимок экрана примера при отрисовки:
с
Два других свойства, связанных с стилем ItemsControl, которые здесь не отображаются, являются GroupStyle и GroupStyleSelector.
Комментарии
Это свойство или ItemContainerStyleSelector свойство используются для задания стиля, чтобы повлиять на внешний вид элементов, содержащих элементы данных. Например, ListBoxсозданные контейнеры являются ListBoxItem элементами управления, для ComboBoxкоторых они являются ComboBoxItem элементами управления.
Это ItemsControl обеспечивает большую гибкость для настройки визуальных элементов и предоставляет множество свойств стилизации и шаблонов. Чтобы повлиять на макет элементов, используйте ItemsPanel это свойство. Если вы используете группирование в элементе управления, можно использовать GroupStyle или GroupStyleSelector свойство. Чтобы указать визуализацию объектов данных, используйте ItemTemplate или ItemTemplateSelector свойство. Дополнительные сведения о том, когда нужно указать ItemTemplate, см. в разделе "Общие сведения о шаблоне данных".
Использование атрибута XAML
<object ItemContainerStyle="ResourceExtension StyleResourceKey"/>
Значения XAML
ResourceExtension Одно из следующих элементов: StaticResourceили DynamicResource. Если сами стили не содержат ссылки на потенциальные ссылки во время выполнения, такие как системные ресурсы или предпочтения пользователя, StaticResource ссылка на стиль обычно рекомендуется для повышения производительности.
StyleResourceKeyx:Key строковое значение, ссылающееся на стиль, запрашиваемый в качестве ресурса.
Сведения о свойстве зависимостей
| Элемент | Ценность |
|---|---|
| Поле идентификатора | ItemContainerStyleProperty |
Свойства метаданных, равные свойству true |
Нет |