我有一个WPF ItemsControl,它的ItemsSource绑定到MVVM中可观察的视图模型集合。 ItemTemplate设置为我想要的用户控件。但是,有些情况下我想要另一个控件而不是XAML中指定的控件。
我怎样才能轻松做到这一点?
答案 0 :(得分:9)
使用DataTemplates将视图模型映射到视图:
<ItemsControl ItemsSource="{Binding SomeCollectionOfViewModels}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type local:FirstViewModel}">
<Label>Foo</Label>
</DataTemplate>
<DataTemplate DataType="{x:Type local:SecondViewModel}">
<Label>Bar</Label>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
答案 1 :(得分:1)
如果我了解你有一个包含两种不同类型对象的集合,并且你想要2个不同的模板。 您可以为每个对象类型构建一个datatemplate,并让WPF根据对象类型呈现正确的模板。