ItemsControl.ItemContainerStyle Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta l'oggetto Style applicato all'elemento contenitore generato per ogni elemento.
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
Valore della proprietà
Oggetto Style applicato all'elemento contenitore generato per ogni elemento. Il valore predefinito è null
.
- Attributi
Esempio
Nell'esempio seguente viene illustrato come usare questa proprietà. Prendere in considerazione quanto segue ListBox:
<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>
Per creare uno stile per gli elementi che contengono gli elementi di dati, creare uno ListBoxItem stile, come illustrato nell'esempio seguente. Lo stile viene applicato a tutti gli ListBoxItem elementi all'interno dell'ambito in cui viene definito lo stile.
<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>
L'elemento ListBoxItem è l'elemento contenitore per il ListBox controllo. Pertanto, un'alternativa al precedente consiste nell'impostare la ItemContainerStyle proprietà dell'oggetto ListBox sullo stile definito. A tale scopo, assegnare lo ListBoxItem stile a x:Key
un oggetto in modo che sia disponibile come risorsa:
<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>
Impostare quindi la proprietà sulla ItemContainerStyle risorsa, come nell'esempio seguente:
<ListBox ItemsSource="{Binding Source={StaticResource MyPhotos}}"
ItemContainerStyle="{StaticResource ContainerStyle}"
Background="Silver" Width="600" Margin="10" SelectedIndex="0"/>
Entrambi gli scenari precedenti producono lo stesso risultato. Tuttavia, uno dei vantaggi di rendere disponibile lo stile come risorsa è che è possibile riutilizzare lo stile. L'impostazione della ItemContainerStyle proprietà in modo esplicito può anche offrire una maggiore leggibilità.
Per l'esempio completo, vedere Introduzione allo stile e all'esempio di templating.
L'esempio seguente è progettato per illustrare la funzione delle diverse proprietà di stile e templating correlate fornite da ItemsControl. In ItemsControl questo esempio viene associato a una raccolta di Task
oggetti. A scopo dimostrativo, gli stili e i modelli in questo esempio sono tutti dichiarati incorporati.
<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>
Lo screenshot seguente mostra l'esempio dopo il rendering:
Sono disponibili due altre proprietà correlate allo stile dell'oggetto ItemsControl che non sono GroupStyle visualizzate qui e GroupStyleSelector.
Commenti
Si usa questa proprietà o la ItemContainerStyleSelector proprietà per impostare uno stile per influire sull'aspetto degli elementi che contengono gli elementi di dati. Ad esempio, per ListBox, i contenitori generati sono ListBoxItem controlli; per ComboBox, sono ComboBoxItem controlli.
Offre ItemsControl una grande flessibilità per la personalizzazione visiva e offre molti stili e proprietà di templating. Per influire sul layout degli elementi, usare la ItemsPanel proprietà . Se si usa il raggruppamento sul controllo, è possibile usare la GroupStyle proprietà o GroupStyleSelector . Per specificare la visualizzazione di oggetti dati, usare la ItemTemplate proprietà o ItemTemplateSelector . Per altre informazioni su quando specificare un ItemTemplateoggetto , vedere Panoramica della creazione di modelli di dati.
Uso della sintassi XAML per gli attributi
<object ItemContainerStyle="ResourceExtension StyleResourceKey"/>
Valori XAML
ResourceExtension
Uno dei seguenti: StaticResource
, o DynamicResource
. A meno che gli stili stessi contengano riferimenti a potenziali riferimenti di runtime, ad esempio risorse di sistema o preferenze utente, StaticResource
il riferimento a uno stile è in genere consigliato per le prestazioni.
StyleResourceKey
x:Key
valore stringa che fa riferimento allo stile richiesto come risorsa.
Informazioni proprietà di dipendenza
Campo Identificatore | ItemContainerStyleProperty |
Proprietà dei metadati impostate su true |
Nessuno |
Si applica a
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per