继承或封装View/Viewmodel
本文关键字:Viewmodel View 封装 继承 | 更新日期: 2023-09-27 18:24:54
我想将一个视图/视图模型封装到另一个视图或视图模型中。目的是有一个弹出窗口,滑动面板或任何你能想到的常见行为,并插入一个自定义的视图/视图模型。
我想用泛型来做这件事,但我有点被卡住了
父视图模型将看起来像
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>
这不起作用,因为视图模型SidePanelViewModel的构造函数需要创建一个类型。
我想我想做的是让一个视图/viewmodel从另一个视图/viewmodel 继承
希望有人能在上提供帮助
为什么需要使用<T>
?
你不能只使用一个普通的object
或某种共享库,如IViewModel
或ViewModelBase
吗?
在WPF中使用泛型类有时会非常痛苦。。
我建议您创建一个实现(当然是虚拟的)方法默认行为的基(抽象)类。