【发布时间】:2014-07-24 05:09:13
【问题描述】:
我目前正在开发我的一个新项目,该项目将成为数据记录可视化工具(用于 Pascal 中的记录)。它应该提供一种使用数据字段和指针字段定义给定记录的方法,然后会有一个示例视图,您可以在其中看到“正在运行”的记录。
现在我遇到的问题是,在这个模型中有记录和组件,它们之间的关系是一个记录有多个组件(如上所述的数据和指针)。
我想为应用程序使用 MVVM,但我现在不确定我应该如何处理这个问题。我将记录和组件建模为 RecordViewModel 和 ComponentViewModel(带有派生的 DataComponentVM、PointerComponentVM)。
现在要查看这些虚拟机,据我所知有 2 个选项:
- 从 Control 派生 ViewModel 并提供 ControlTemplate
- 使用 ViewModel 作为 DataContext 创建 UserControl
UserControl 方法适用于 RecordViewModel,但是当我尝试设计 ComponentViewModel 的显示方式(在 ContentPresenter 中)时,这种方法失败了,因为我需要在我的 RecordViewModel 中提供一组 UserControls(而不是 DataComponentViewModels)会让这项工作(我很确定这不是一个好主意)。
Control 方法还有一个问题,即 ViewModel 不再是 POCO,我认为这对它有一种奇怪的感觉,也不被认为是好的做法。
还有其他方法可以解决这个问题吗?在这方面,您对我还有什么好的建议吗?
提前致谢!
代码:
public class RecordViewModel : BaseViewModel
{
public RecordViewModel()
{
Components = new ObservableCollection<ComponentViewModel>();
}
public ObservableCollection<ComponentViewModel> Components { get; set; }
}
public class DataComponentViewModel : ComponentViewModel
{
public string Type { get; set; }
}
public class PointerComponentViewModel : ComponentViewModel
{
public object Target { get; set; }
}
【问题讨论】: