我正在使用WPF,MVVM-Light。 在我的用户界面我有一个文本框,我想阻止用户在文本框中输入某些字符。 我知道如果我们使用代码隐藏功能,我可以处理keyPress按键事件,我可以通过MVVM实现吗? 我们可以使用一些行为或一些交互触发器吗?防止用户在文本框中输入某些字符
0
A
回答
0
是的,要筛选输入MVVM的方式,我会建议使用自定义控件(如掩码TextBox
控件)或行为。
我最近在寻找一个很好的蒙面TextBox
,从Xceed有一个免费的,你可以找到here。我不能说这个,因为我没有用过它,但我对过去使用过的其他Xceed组件感到满意。
但是我不想去第三方并包含一堆我不需要的控件,所以我最终创建了一个简单地附加到TextBox
并基于FilterType过滤输入的行为。该行为非常易于创建,您只需使用PreviewTextInput
事件过滤掉不需要的字符即可。
This SO Answer有许多关于如何过滤/屏蔽输入的建议和链接,如果您不熟悉创建附加行为,this example会显示如何为屏蔽文本框创建附加行为。
1
使用代码隐藏完全可以,MVVM提供的代码隐藏只与您的View有关。
所以,如果你有一些,说“用户不仅可以在此框中键入数字”视图特定的逻辑,那么它完全可以写一KeyPress
事件为TextBox
,只允许被处理的数字键。你甚至可以把它放入UserControl
,这样它可以重用。
但是,如果你允许的字符逻辑是基于应用程序的逻辑,如“用户只能使用该字符串值app.config文件中定义的字符”,那么你会更好验证,在ViewModel。
另请注意,限制与验证不同。
如果你想验证用户的条目,那么我就这么用IDataErrorInfo
从视图模型层,可能是一个与UpdateSourceTrigger=PropertyChanged
模式,因此验证每一个按键后检查结合做。
如果你想限制哪些字符可键入到TextBox
,那么我可能会做,从代码视图层后面,因为这是查看的功能。
相关问题
- 1. 防止用户更改asp.net文本框中的某些文本
- 2. Angular 2阻止用户将某些字符输入到文本输入字段
- 3. 阻止在文本框中键入某些字符?
- 4. 防止用户在计算器中使用某些字符
- 5. 防止用户在SWT中的文本字段中输入字符
- 6. 防止用户在HTML5输入文本字段中输入非数字
- 7. 防止在输入字符时继续在文本框中键入
- 8. 防止用户写入本地字符
- 9. 处理Angular 2表单验证。如何防止用户在输入文本框中输入特殊字符?
- 10. 如何防止'字符被输入到文本框?
- 11. 如何在输入信息时在文本框中遮盖某些字符?
- 12. 防止用户在DataWindow列中输入特定字符
- 13. 防止在页面上的所有文本框中输入字符ASP.net
- 14. 如何防止用户输入空格到栏文本字段
- 15. 防止用户在textarea中输入某个单词
- 16. 允许用户在文本框中输入转义字符
- 17. 防止进入文本框
- 18. 如何防止用户在输入字段内输入无效字符
- 19. 防止特殊字符输入到HTML文本字段
- 20. 禁止在文本框中输入字符
- 21. WPF:如何防止用户在绑定到数字属性的文本框数据中输入文本?
- 22. Tkinter如何防止用户输入字符串到旋转框中
- 23. 防止在输入文本框中退格
- 24. 如何使用复选框来防止某些输出运行?
- 25. 用户在文本框中的输入
- 26. HTML表单 - 防止某些用户勾选复选框
- 27. 用户输入文本框
- 28. 防止某些字符和重复字符
- 29. 如何防止用户使用JQuery将文本输入到表单字段中?
- 30. 如何从文本框输入中阻止Unicode字符?