【发布时间】:2014-04-12 17:05:24
【问题描述】:
我最近在 WPF 中进行了很多编程,但我的 View 和 ViewModel 在这一点上并没有分开。嗯,它是部分的。我所有与文本框中的文本、标签的内容、数据网格中的列表相关的绑定......都是由带有 NotifyPropertyChanged 事件的常规属性完成的。
我处理按钮点击或文本更改的所有事件都是通过链接事件来完成的。现在,我想开始使用命令并找到这篇文章:http://www.codeproject.com/Articles/126249/MVVM-Pattern-in-WPF-A-Simple-Tutorial-for-Absolute。它解释了如何设置 MVVM,但我对 RelayCommand 感到困惑。
它的作用是什么? 它可用于我表单中的所有命令吗? 当(a)某些文本框未填写时,如何使按钮禁用?
编辑 1:
对“我的表单中的所有命令都可用吗?”的一个很好的解释在这里回答:https://stackoverflow.com/a/22286816/3357699
【问题讨论】:
-
Is it useable for all commands in my form?- 你在这里指的是什么命令? -
Click和TextChanged -
对于
Click,您可以直接将按钮的CommandDP 绑定到ViewModel 中的一些ICommand。但是要绑定TextChanged,您需要使用交互触发器在您的ViewModel 中绑定ICommand。 -
RelayCommand 实现 ICommand 并让您定义在调用 Execute 时应使用的操作。这就是您最终为所有命令使用一个类的方式,您只需更改操作,而不是为实现 ICommand 的每个命令创建每个类。在 wpf 中指挥工作需要 ICommand。
-
我自己尝试了一些东西并发布了我得到的东西。我得到了它的工作,但还有 2 个问题我希望在这里得到回答,而不是提出一个新问题。
标签: c# wpf mvvm binding relaycommand