Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用GraphSharp/QuickSharp库在WPF项目中实现MVVM模式_C#_Wpf_Mvvm_Quickgraph_Graph Sharp - Fatal编程技术网

C# 如何使用GraphSharp/QuickSharp库在WPF项目中实现MVVM模式

C# 如何使用GraphSharp/QuickSharp库在WPF项目中实现MVVM模式,c#,wpf,mvvm,quickgraph,graph-sharp,C#,Wpf,Mvvm,Quickgraph,Graph Sharp,注意:我是所有相关领域(WPF、MVVM模式、GraphSharp/QuickSharp库)的新手 我正在尝试使用GraphSharp库显示一个简单的有向图。我完成了,并编写了一些非常类似的代码(创建自定义顶点、边、图形和GraphLayout类型等) 接下来,我在自定义顶点类型中添加了一个状态属性,并在XAML代码中实现了一个数据模板和一个样式资源(有点类似于上面链接的演示),它根据顶点控件的状态属性将各种样式应用于顶点控件。为此,我必须在自定义顶点类型中实现INotifyPropertyCh

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

我正在尝试使用GraphSharp库显示一个简单的有向图。我完成了,并编写了一些非常类似的代码(创建自定义顶点、边、图形和GraphLayout类型等)

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

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

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

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

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

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


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

模型
用于业务逻辑,也称为域。很难回答你的问题,因为我们不知道你的领域到底是什么:你是在尝试建立一个图形库,还是只是想让我们建立一个图形库来显示另一个领域的值?我不是在尝试建立一个库,我是在尝试建立一个应用程序来说明探索/导航图形的算法。在本例中,域包括可用于导航/浏览图形的各种策略,以及用于表示图形的数据结构(QuickGraph基类和从它们派生的自定义顶点/边/图形类)。让我建议您看看GraphX(基于graph#)):首先,Graph#已经过时了,其次,您可以在论坛上找到有关MVVM实现的信息。请随便问,希望有帮助。