我想使用WrapPanel。我有一个带有ViewModels的ObservableCollection,它们都有自己的视图。有没有办法使用DataTemplates并使用多个视图?
这就是我现在正在做的事情:
<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中的每个项都需要一个自己的视图。
你怎么能这样做?
谢谢!
答案 0 :(得分:3)
您可以使用ItemTemplateSelector为每个项目提供正确的模板。或者您可以在不使用x:Key但是设置了TargetType的情况下创建DataTemplates,并且不在ItemsControl上指定ItemTemplate。这样wpf就能找到正确的DataTemplate。