我目前正在尝试使用Prism框架制作基于MVVM的WPF程序,并且我对命令的疑问很多。
让我向您介绍一下当前的制作方式: 在视图后面加上一些代码,ViewModel包含要显示的所有数据,Model保留数据。
关于命令的问题是当我必须实现一个元素时,该元素不断获取鼠标的位置并处理一些命令以发送到硬件。目前,它在后面的代码中。因为它在后面的代码中,所以我们会遇到无法对发送到硬件的命令进行单元测试的问题。
比方说,现在我要将这段代码放在ViewModel中,问题将出在性能上,因为UI会不断对鼠标的位置做出反应,从而导致获取和设置很多值(很多每秒)。
然后我进行了搜索,看来MVVM是最具争议的话题。
这是一个例子: https://stackoverflow.com/a/30343419/10695437 和 https://stackoverflow.com/a/1510592/10695437
因此,什么时候使用绑定命令?是否有特定类型的软件重要或重要?
编辑:用我上面提到的帖子将其标记为重复,使我只说“哇”。好像这个问题是否已经回答并在5年前引起争议,似乎无法重新讨论。谢谢您,下一次我将坚持大多数人的想法,而不是围绕一个问题尝试获得“真实的”答案(这意味着不是以“我认为”或“ IMO”开头的答案)。 / p>
答案 0 :(得分:0)
命令的最大好处是,您可以保留命令的用途以及当前是否可以在一个地方执行的逻辑。比在整个代码中分散设置Button.IsEnabled值要好得多。当MVVM设计模式的主要目标是将UI与应用程序的其余部分完全分离时,这将双重适用。
在您的特定情况下,我不会在每条鼠标移动消息后进行更新-而是某种缓冲机制(例如,反应性扩展),因此您只能在设定的时间段后(也许每半秒)更新一次命令