我正在使用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. 防止用戶輸入某些字符?
- 2. 禁止在輸入框中輸入某些字符的腳本
- 3. 防止用戶更改asp.net文本框中的某些文本
- 4. Angular 2阻止用戶將某些字符輸入到文本輸入字段
- 5. Visual Basic幫助 - 在可視基本文本框中防止輸入某些字符的文本限制
- 6. 如何防止用戶使用jQuery在文本框中輸入特定字符?
- 7. 阻止在文本框中鍵入某些字符?
- 8. 防止用戶在計算器中使用某些字符
- 9. 防止用戶在文本框中輸入更大的值
- 10. 防止用JavaScript輸入中文字符
- 11. 防止用戶在SWT中的文本字段中輸入字符
- 12. 防止用戶在HTML5輸入文本字段中輸入非數字
- 13. 防止用戶寫入本地字符
- 14. 防止在輸入字符時繼續在文本框中鍵入
- 15. 處理Angular 2表單驗證。如何防止用戶在輸入文本框中輸入特殊字符?
- 16. 如何防止'字符被輸入到文本框?
- 17. 如何在輸入信息時在文本框中遮蓋某些字符?
- 18. 防止用戶在DataWindow列中輸入特定字符
- 19. 防止在頁面上的所有文本框中輸入字符ASP.net
- 20. 如何防止用戶刪除文本輸入中的前三個字符?
- 21. 防止某些文件被拉入git
- 22. 防止用jQuery在HTML文本框中輸入空格
- 23. 如何限制用戶在swt文本框中輸入一些字符
- 24. 如何防止用戶輸入空格到欄文本字段
- 25. 防止用戶在textarea中輸入某個單詞
- 26. C#:防止用戶選擇列表框中的某些項目
- 27. 在asp.net文本框中顯示輸入用戶字符串
- 28. 允許用戶在文本框中輸入轉義字符
- 29. 防止進入文本框
- 30. 如何防止用戶在輸入字段內輸入無效字符