我想将view / viewmodel封装到另一个view / viewmodel中。目的是有一个弹出窗口,幻灯片或任何你能想到的常见行为,并在其中插入自定义视图/视图模型。
我想使用通用做这件事,但我有点卡住了
父视图模型看起来像那样
public class SidePanelViewModel<T>
{
public SidePanelViewModel(T enclosedViewModel)
{
EnclosedViewModel = enclosedViewModel;
}
public T EnclosedViewModel { get; private set; }
}
父视图就像那样
... whatever design and behavior ...
<ContentPresenter Content="{Binding EnclosedViewModel}"/>
... whatever design and behavior ...
在我的映射文件中,我想说明一下,但问题出在此处:
<DataTemplate DataType="{x:Type WPFTests:SidePanelViewModel}">
<WPFTests:SidePanelView />
</DataTemplate>
<DataTemplate DataType="{x:Type WPFTests:EnclosedViewModel}">
<WPFTests:EnclosedView />
</DataTemplate>
这不起作用,因为viewmodel SidePanelViewModel的构造函数需要创建一个类型。
我想我想做的是让view / viewmodel继承自另一个视图/ viewmodel
希望有人可以提供帮助
答案 0 :(得分:2)
为什么需要使用<T>
?
您不能只使用常规object
或某种共享基础,例如IViewModel
或ViewModelBase
吗?
答案 1 :(得分:0)
在WPF中使用泛型类有时会非常痛苦。
我建议你创建一个基(抽象)类来实现(虚拟的,当然)方法的默认行为。