2012-03-29 25 views
1

Ich möchte ein WrapPanel verwenden. Ich habe eine ObservableCollection mit ViewModels, die alle ihre eigene Ansicht haben. Gibt es eine Möglichkeit, DataTemplates zu verwenden und mehrere Ansichten zu verwenden?Verschiedene Ansichten für jedes Objekt in observableCollection

Das ist, was ich jetzt tue:

<DataTemplate x:Key="ProjectInfoDetailTemplate"> <!-- DataType="{x:Type viewModels:ProjectInfoViewModel} --> 
     <views:ProjectInfoView MouseLeftButtonDown="ProjectInfoView_MouseLeftButtonDown"/> 
    </DataTemplate> 

<ItemsControl Grid.Row="1" Grid.Column="0" 
        ItemsSource="{Binding AllProjects}" 
        ItemTemplate="{StaticResource ProjectInfoDetailTemplate}" Margin="0,15,0,0"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel> 
        <WrapPanel.Resources> 
         <Style TargetType="{x:Type views:ProjectInfoView}"> 
          <Setter Property="Margin" Value="10" /> 
         </Style> 
        </WrapPanel.Resources> 
       </WrapPanel> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    </ItemsControl> 

Aber jedes Element in der ObservableCollection AllProjects benötigt eine eigene Ansicht.

Wie können Sie das tun?

Danke !!

Antwort

3

Sie können ItemTemplateSelector verwenden, um für jedes Element die richtigen Vorlagen bereitzustellen. Oder Sie erstellen DataTemplates ohne x: Key, aber mit TargetType set und geben ItemTemplate in ItemsControl nicht an. Auf diese Weise findet wpf das richtige DataTemplate selbst.

+0

Vielen Dank! Ich war mir nicht ganz sicher ob es möglich war ein ItemTemplate zu definieren;) –

Verwandte Themen