我尝试ItemsControl使用不同的模板制作我的显示项目,具体取决于其viewModel类型.初看起来我认为它可以像我们通常那样做ContentControl:
<ItemsControl ItemsSource="{Binding MyViewModelCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type myNameSpace:myViewModel1}">
<myNameSpace:myControl2/>
</DataTemplate>
<DataTemplate DataType="{x:Type myNameSpace:myViewModel2}">
<myNameSpace:myControl2/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
但不幸的是,你不能有两个DataTemplate在ItemsControl.ItemTemplate.我发现了一个小技巧.
在您的XAML代码中只需替换ItemsControl.ItemTemplate标记ItemsControl.Resources,它应该工作.
<ItemsControl ItemsSource="{Binding MyViewModelCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type myNameSpace:myViewModel1}">
<myNameSpace:myControl2/>
</DataTemplate>
<DataTemplate DataType="{x:Type myNameSpace:myViewModel2}">
<myNameSpace:myControl2/>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1433 次 |
| 最近记录: |