2

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

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

4

2 回答 2

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>
于 2009-09-07T11:46:18.813 回答
1

如果我了解您有一个包含两种不同类型对象的集合,并且您想要 2 个不同的模板。您可以为每个对象类型构建一个数据模板,并让 WPF 根据对象类型呈现正确的模板。

于 2009-09-07T11:45:23.603 回答