WPF仅限数字TextBox - 使用事件或命令处理它?

时间:2013-02-21 15:43:53

标签: wpf mvvm mvvm-light

我正在尝试创建一个只允许数字字符和小数点的TextBox。我在编写代码时不需要帮助,但是在概念上。我正在使用MVVM来设计WPF应用程序,我不确定是使用事件还是事件命令。

我已经阅读了几个关于这个主题的不同观点:

  • (我发现这有点极端,有些人称之为“适得其反”,但它坚持MVVM)的“纯洁”:从来没有您View后面的代码。为防止这种情况,请使用MVVM Light Library。简而言之,将事件转换为命令,以便可以在ViewModel
  • 中控制所有内容
  • (第二个论点不支持MVVM的(可能过度)“纯度”:不是所有事都必须在ViewModel处理,而且没关系创建Events以处理某些UI要求。

由于简单性,我更倾向于second option,正如我之前所说,第一种选择似乎有点极端。在我的具体情况下(仅创建一个数字TextBox),大多数人会更喜欢上述选项中的任何一个或我没有发现的选项吗?

2 个答案:

答案 0 :(得分:5)

您应该将此作为.cs文件中的事件处理。您正尝试在控件中添加功能。就像TextBox中的Text一样。它们都是.cs文件中的handeld。 ViewModel可用于保存基于Data for View的数据和行为,而不是Control的功能。

答案 1 :(得分:0)

这应该直接在View中处理,而不是涉及ViewModel,但是不需要重新发明轮子。

根据您的确切数字要求,使用扩展WPF工具包中的DoubleUpDown或IntegerUpDown等控件(可通过NUGet获取)