【发布时间】:2011-04-18 12:48:29
【问题描述】:
我有一个集合,其中包含所有从同一接口继承的多种类型的项目。这绑定到 ItemsControl。窗口的 DataContext 设置为保存集合的 ViewModel。
我想做的是让集合中不同类型的每个项目使用不同的 ViewModel。
因此,如果我在 itemscontrol 中的模板设置如下,我希望第一个模板具有 ViewModel1 的 DataContext,而第二个模板具有 ViewModel2 的 DataContext。我不能直接在它们上设置 DataContext,因为 ItemsControl 会将 DataContext 设置为项目。
有人知道这个问题的解决方案,或者使用 MVVM 的更好方法吗?
<DataTemplate DataType="{x:Type Models:ItemType1}">
<Controls:MyControl Text="{Binding Body}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type Models:ItemType2}">
<Controls:MyControl2 Text="{Binding Body}"/>
</DataTemplate>
【问题讨论】: