WPF:如何在ItemsControl中使用两个不同的控件?

时间:2009-09-07 11:33:47

标签: wpf mvvm itemscontrol

我有一个WPF ItemsControl,它的ItemsSource绑定到MVVM中可观察的视图模型集合。 ItemTemplate设置为我想要的用户控件。但是,有些情况下我想要另一个控件而不是XAML中指定的控件。

我怎样才能轻松做到这一点?

2 个答案:

答案 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根据对象类型呈现正确的模板。