具有多个DataTemplates的ItemsControl是否会破坏MVVM模式?

时间:2017-05-05 13:20:39

标签: c# wpf mvvm dependencies viewmodel

我使用了this回答中提供的解决方案,以便根据我的复合集合中的类型使用两种不同的视图模型。

视图的摘录如下:

<ItemsControl ItemsSource="{Binding DecksAndCards}" >
    <ItemsControl.Resources>
        <DataTemplate DataType="{x:Type viewModel:DeckViewModel}">
            <view:DeckView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type viewModel:CardViewModel}">
            <view:CardView />
        </DataTemplate>
    </ItemsControl.Resources>

...

视图位于仅引用View项目的ViewModel项目中。

但是通过使用x:Type(我认为它充当静态引用),我需要向我的视图项目添加对我的DomainLayer项目的引用,因为ViewModel项目也引用它。

如果我不添加此引用,则会收到错误消息: Unknown build error, 'Cannot resolve dependency to assembly 'DomainLayer, [...] because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.

遵循MVVM模式,View不应直接引用模型。所以我的问题是,是否有另一种解决方案,而不是我上面发布的解决方案,或者在这种情况下是否需要打破模式?

0 个答案:

没有答案