0

注意:我是所有相关领域的新手(WPF、MVVM 模式、GraphSharp/QuickSharp 库)。

我正在尝试使用 GraphSharp 库显示一个简单的有向图。我浏览了这个演示,并编写了一些非常相似的代码(创建自定义 Vertex、Edge、Graph 和 GraphLayout 类型等)。

接下来,我向我的自定义 Vertex 类型添加了一个 Status 属性,并在我的 XAML 代码中实现了一个数据模板和一个样式资源(有点类似于上面链接的演示),它根据它们的 Status 属性将各种样式应用于顶点控件。为此,我必须在我的自定义 Vertex 类型中实现 INotifyPropertyChanged 接口。我还有一些其他代码可以在运行时更改顶点的 Status 属性,从而触发样式更改。到目前为止,这一切都很好。

接下来我阅读了几篇关于如何将 WPF 代码组织成模型、视图模型和视图层的文章:视图(最好只有 XAML 代码)应该只与视图模型类(通过绑定)对话,后者实现 INotifyPropertyChanged 和视图模型应该只与模型类中实现的“业务逻辑”对话。这一切听起来不错,但现在我很困惑什么属于哪里:

  • XAML 代码是视图,到目前为止它很简单。

  • 自定义的 GraphLayout 类型似乎属于视图模型层。

  • 我猜想自定义顶点、边和图形类型属于模型层。除了现在自定义顶点类型实现了 INotifyPropertyChanged,这似乎是视图模型类的一个特征。

  • 更改自定义顶点的 Status 属性的代码利用了 QuickGraph 基类的功能(例如 BidirectionalGraph.OutEdges()),因此它应该属于模型层。但是:如果自定义图属于视图模型,那么为什么模型类调用视图模型类来确定与业务逻辑相关的任何内容。

所以主要问题是:对于这样的程序,首选的类结构是什么?哪些类属于模型、视图模型和视图层?

4

0 回答 0