C# 使用带有MVVM架构的WPF创建与被轮询设备相对应的动态GUI 我最近发现了Windows演示基金会(WPF),所以这是一个非常新的框架。我也看过多个关于实现MVVM体系结构的教程,但我仍然不确定这是否是完成手头任务的正确方法,因为它比我看过的所有示例都要复杂得多

C# 使用带有MVVM架构的WPF创建与被轮询设备相对应的动态GUI 我最近发现了Windows演示基金会(WPF),所以这是一个非常新的框架。我也看过多个关于实现MVVM体系结构的教程,但我仍然不确定这是否是完成手头任务的正确方法,因为它比我看过的所有示例都要复杂得多,c#,wpf,user-interface,mvvm,architecture,C#,Wpf,User Interface,Mvvm,Architecture,我的计划需要完成的内容: 该程序将扫描当前连接到笔记本电脑的所有串行端口,并将公司生产的所有激光器设备(由固件ID确定)添加到选择组合框中。然后,用户将选择一个com端口/设备并按下按钮连接到它 这将触发与用户选择的设备相对应的新窗口(视图)和新激光对象(模型)的创建。根据拾取的设备,窗口应包含必要的字段,以显示激光器具有的不同传感器(例如功率、电流、温度)和驱动器。用户界面应该能够监视和显示大约10种不同的设备的相应读数。因此,每种类型的设备都应具有相应的视图 那么首先,MVVM架构是正确的方

我的计划需要完成的内容:

该程序将扫描当前连接到笔记本电脑的所有串行端口,并将公司生产的所有激光器设备(由固件ID确定)添加到选择组合框中。然后,用户将选择一个com端口/设备并按下按钮连接到它

这将触发与用户选择的设备相对应的新窗口(视图)和新激光对象(模型)的创建。根据拾取的设备,窗口应包含必要的字段,以显示激光器具有的不同传感器(例如功率、电流、温度)和驱动器。用户界面应该能够监视和显示大约10种不同的设备的相应读数。因此,每种类型的设备都应具有相应的视图

那么首先,MVVM架构是正确的方法吗

如果是这样,您将如何实现这样的设计?您能否拥有一个抽象的基类视图,它包含所有设备所需的所有字段,然后是继承自基类的具体子类


提前感谢您抽出时间

MVVM
是您的正确选择

使用
DataTemplate
并根据选择定义
视图
,创建与
视图
对应的
视图模型
,以显示。使用
ContentPresenter
根据您的选择切换
ViewModels

在这里,您可以了解如何使用
DataTemplate

这里是了解MVVM的地方


示例

每个设备窗口应为对话框类型(不允许在打开时与父窗口交互)?WPF/MVVM最适合于此;它的优点之一是易于将任意的UI块填充到任意的父级中。我不知道你为什么想要一个抽象的基类,其中包含每个设备的所有属性;我将使我的基类成为一个只包含普通内容的适当基类,然后让子类添加它们所需的内容。顺便说一句,我希望你会因为“太宽泛”、“基于观点”、“妈妈不爱我”、“我坐的酒吧太吵”等而被骂@Carl不知道你说的对话类型是什么意思,但每个窗口都应该是一个单独的窗口,其中包含的字段大约每秒都会根据从设备获取的读数进行更新,并且还有一个设置部分,用户可以在其中更改一些参数,例如激光器的输出功率。@edplunkett是的,这就是我所说的抽象类,对不起,我解释得不好。谢谢你的意见!非常感谢阿宾!我将对此做更多的研究。