2012-03-29 13 views
1

WrapPanelを使用したいと思います。私はViewModelsを持つObservableCollectionを持っています。それらはすべて独自のビューを持っています。 DataTemplatesを使用し、複数のビューを使用する方法はありますか?observableCollectionのオブジェクトごとに異なるビュー

これは私が今やっているものです:

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

しかしのObservableCollection AllProjectsの各項目は、独自のビューを必要とします。

どうすればいいですか?

ありがとうございます!

答えて

3

ItemTemplateSelectorを使用すると、アイテムごとに正しいテンプレートを提供できます。または、x:KeyではなくTargetTypeを設定してDataTemplatesを作成し、ItemsControlにItemTemplateを指定しないでください。このようにしてwpfは正しいDataTemplate自体を見つけます。

+0

ありがとうございます! ItemTemplateを定義することができないかどうかはわかりませんでした;) –