2010-08-25 9 views
0

Lorsque j'utilise un ListBox - les éléments à l'intérieur sont de type ListBoxItem, pour ComboBox ils sont des ComboBoxItems. De quel type s'agit-il pour ItemsControl? J'ai creusé les modèles de Blend en vain.Quel est le type d'éléments dans ItemsControl?

Je souhaite créer un nouveau ControlTemplate pour les éléments dans ItemsControl.

Pour clarifier avec le code:

EDIT: Figured le type comme indiqué ci-dessous:

<UserControl.Resources> 
    <Style x:Key="TemplateStyle" TargetType="{x:Type ContentControl}"> <!-- Here I need the correct Type in the TargetType-tag --> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ContentControl}"> <!-- Again, I need the correct Type in a TargetType-tag --> 
        <DockPanel> 
         <TextBlock Text="Header" DockPanel.Dock="Top"/> 
         <ContentPresenter/> 
        </DockPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
</UserControl.Resources> 
<ItemsControl ItemContainerStyle="{StaticResource TemplateStyle}"/> 

Répondre

0

I figured it out par essais et erreurs. Le type à l'intérieur de ItemsControl est une sorte de ContentControl (probablement un ContentControl). Je vais mettre à jour la question pour les autres.

+0

Incorrect. Le type de conteneur de ItemsControl est ContentPresenter. Vérifiez simplement par [ItemContainerGenerator.ContainerFromItem] (http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcontainergenerator.containerfromitem.aspx) pour certains éléments. – Clemens

1

Il est tout simplement un ContentPresenter, ce qui implique qu'il sera rendu avec tout ce DataTemplate est associé au type.

Si vous voulez prendre le contrôle explicite sur la façon dont les éléments sont rendus, vous pouvez simplement utiliser ItemTemplate:

<ItemsControl ItemsSource="{Binding Customers}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+0

J'ai besoin de mettre le comportement à part le ItemTemplate (qui est variable) - donc, j'ai besoin de contrôler le ControlTemplate, mais je vais essayer de voir si je peux le frapper avec un x: TypeOf ContentPresenter. EDIT: Cela ne fonctionne pas comme TargetType dans le style - Je clarifierai ma question. – Goblin

+0

Pour clarifier - l'élément dans ItemsControl doit être quelque chose avec une propriété Template - ContentPresenter ne fait pas. – Goblin