如何实现多个按钮具有相同的行为? [我需要建议]

问题描述 投票:0回答:1

我正在学习 WPF 和 MVVM,我的目标是使用 SerialPort 创建串行通信并更新 UI 以通知用户发生了什么。

因此程序正在与卡(最多 3 个)通信,并且每个卡都有输出通道(最多 8 个)。程序跟踪的每个输出通道有 3 个值。因此,如果所有卡(3)都建立了最大通道(8),程序将检查并更新 3x8x3 = 72 个不同的值(最多)。可以有任意数量的按钮(值),例如,如果 1 张卡建立了 3 个通道,程序将只有 9 个按钮。

我正在尝试添加一项功能,用户可以通过发送特殊包来控制这 72 个值。

  • 例如,如果程序发送“0x01”,它将关闭 Card0、Out1(通道)、Out-c(通道变量)
  • 如果程序发送“0x02”,它将打开(如果关闭)Card0、Out1(通道)、Out-c(通道变量)
  • 包已预先定义,通信部分已完成。

我的问题是我应该如何处理这种问题。任何建议都会有帮助。

提前致谢。

Example UI

我认为创建自定义 UserControl 并为每个按钮创建实例,但是,我是 WPF 和 MVVM 的新手,这就是为什么我认为寻求建议会更好。

c# .net wpf mvvm wpf-controls
1个回答
0
投票

由于您想以 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 中,所有工作都在“视图模型”级别或更低级别完成。 视图通过绑定连接到视图模型视图模型无权访问视图上的控件,即使控件和视图不存在也应该可以工作(就像当您执行测试时,视图模型是可测试的)。

© www.soinside.com 2019 - 2024. All rights reserved.