ItemsControl.ItemContainerStyle Vlastnost

Definice

Získá nebo nastaví Style , který se použije na element kontejneru vygenerovaný pro každou položku.

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

Hodnota vlastnosti

Použije se Style u elementu kontejneru vygenerovaného pro každou položku. Výchozí hodnota je null.

Atributy

Příklady

Následující příklad ukazuje použití této vlastnosti. Vezměte v úvahu následující datovou vazbu ListBox:

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

Chcete-li vytvořit styl pro prvky, které obsahují datové položky, vytvořte ListBoxItem styl, jak je znázorněno v následujícím příkladu. Styl se použije u všech ListBoxItem prvků v oboru, ve které je styl definován.

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

Jedná se ListBoxItem o element kontejneru ListBox pro ovládací prvek. Proto je alternativou k předchozímu nastavení ItemContainerStyle vlastnosti definovaného ListBox stylu. Pokud to chcete udělat, zadejte ListBoxItem styl x:Key tak, aby byl k dispozici jako prostředek:

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

Dále nastavte ItemContainerStyle vlastnost na prostředek, jak je znázorněno v následujícím příkladu:

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

Oba předchozí scénáře mají stejný výsledek. Jednou z výhod zpřístupnění stylu jako prostředku je ale to, že styl můžete znovu použít. ItemContainerStyle Nastavení vlastnosti může také poskytnout větší čitelnost.

Následující příklad je navržen tak, aby ilustroval funkci různých stylů a šablonování souvisejících vlastností poskytovaných objektem ItemsControl. V ItemsControl tomto příkladu je vázán na kolekci Task objektů. Pro demonstrační účely jsou styly a šablony v tomto příkladu deklarovány přímo.

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

Následuje snímek obrazovky s příkladem, jak se zobrazí:

Příklad ItemsControl snímku obrazovky s

Dvě další vlastnosti související se stylem ItemsControl, které zde nejsou uvedeny, jsou GroupStyle a GroupStyleSelector.

Poznámky

Tuto vlastnost nebo ItemContainerStyleSelector vlastnost slouží k nastavení stylu, který má vliv na vzhled prvků, které obsahují datové položky. Například vygenerované ListBoxkontejnery jsou ListBoxItem ovládací prvky, pro , pro ComboBox, jsou ComboBoxItem ovládací prvky.

Poskytuje ItemsControl skvělou flexibilitu pro vizuální přizpůsobení a poskytuje mnoho vlastností stylů a šablon. Chcete-li ovlivnit rozložení položek, použijte ItemsPanel vlastnost. Pokud používáte seskupení na ovládacím prvku, můžete použít GroupStyle vlastnost nebo GroupStyleSelector vlastnost. Chcete-li určit vizualizaci datových objektů, použijte ItemTemplate vlastnost nebo ItemTemplateSelector vlastnost. Další informace o tom, kdy zadat , ItemTemplatenaleznete v tématu Přehled šablon dat.

Použití atributu XAML

<object ItemContainerStyle="ResourceExtension StyleResourceKey"/>

Hodnoty XAML

ResourceExtension Jedna z následujících možností: StaticResourcenebo DynamicResource. Pokud samotné styly neobsahují odkazy na potenciální odkazy za běhu, jako jsou systémové prostředky nebo uživatelské předvolby, StaticResource doporučuje se pro zvýšení výkonu obvykle odkaz na styl.

StyleResourceKeyx:Key řetězcová hodnota odkazující na požadovaný styl jako prostředek.

Informace o vlastnosti závislosti

Položka Hodnota
Pole Identifikátor ItemContainerStyleProperty
Vlastnosti metadat nastavené na true None

Platí pro

Viz také