我正在学习 WPF 和 MVVM,我的目标是使用 SerialPort 创建串行通信并更新 UI 以通知用户发生了什么。
因此程序正在与卡(最多 3 个)通信,并且每个卡都有输出通道(最多 8 个)。程序跟踪的每个输出通道有 3 个值。因此,如果所有卡(3)都建立了最大通道(8),程序将检查并更新 3x8x3 = 72 个不同的值(最多)。可以有任意数量的按钮(值),例如,如果 1 张卡建立了 3 个通道,程序将只有 9 个按钮。
我正在尝试添加一项功能,用户可以通过发送特殊包来控制这 72 个值。
我的问题是我应该如何处理这种问题。任何建议都会有帮助。
提前致谢。
我认为创建自定义 UserControl 并为每个按钮创建实例,但是,我是 WPF 和 MVVM 的新手,这就是为什么我认为寻求建议会更好。
由于您想以 MVVM 方式实现,因此首先创建视图模型来表示应用程序的各个部分。您可以使用
ObservableObject
包中的 CommunityToolkit.Mvvm
类作为视图模型的基类。
然后为您的视图创建多个 WPF 资源字典。该文件将包含样式、数据模板以及在窗口上显示视图模型所需的其他 WPF 内容。使用
MergedDictionaries
属性将所有内容合并到 App.xaml 中,如 https://learn.microsoft.com/en-us/dotnet/api/system.windows.resourcedictionary.mergeddictionaries?view=windowsdesktop- 中的示例所示8.0
关于 WPF 的 UserControls...它们只是不必要的负担。不要使用它们。
在 MVVM 中,所有工作都在“视图模型”级别或更低级别完成。 视图通过绑定连接到视图模型。 视图模型无权访问视图上的控件,即使控件和视图不存在也应该可以工作(就像当您执行测试时,视图模型是可测试的)。