我正在使用DataTemplates来显示列表控件中的项目。列表中的视图模型来自不同的程序集,但它们都派生自相同的基类。查看器位于具有基类的程序集中,并绑定到基类项的列表。我的每个项目的DataTemplates都基于类型,因此WPF应该为列表中的视图模型的类型选择DataTemplate。
我遇到的问题是派生的视图模型及其DataTemplate在不同的程序集中。具有派生视图模型的程序集引用基础程序集。所以基础组件不能引用派生的组件。
示例代码:
ViewModelB派生自ViewModelA。这些类分别在程序集A和B中。
class CollectionViewModel
{
List<ViewModelA> m_Items;
List<ViewModelA> Items
{
get { return m_Items}
}
}
CollectionViewModel包含ViewModelA对象列表
<ItemsControl ItemsSource="{Binding Items}"/>
在XAML中,列表绑定到ItemsControl以进行显示
<DataTemplate DataType="{x:Type ViewModelA}"> // in assembly A
<UserControlForViewModel_A/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModelB}"> // in assembly B
<UserControlForViewModel_B/>
</DataTemplate>
列表中的每个视图模型都将由相应的DataTemplate
显示get_variables_available_in_checkpoint