如何在非引用程序集中为派生类型应用DataTemplate

时间:2018-01-10 14:18:04

标签: wpf xaml mvvm datatemplate

我正在使用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

0 个答案:

没有答案