我有一大堆CheckBox和一些TextBox輸入的長形式。我希望任何時候任何控件發生更改時都會引發事件(即任何CheckBox狀態發生更改或任何TextBox.Text發生更改)。有沒有一種全球的方式來做到這一點,而無需爲每個控件添加事件處理程序?如何在每次更改控件時獲取事件?
回答
WPF及其聲明性特性之一是事件沿着可視化樹繼承下來。
<Window x:Class="MyApplication.MainWindow"
....
TextBox.TextChanged="TextBox_TextChanged" CheckBox.Checked="CheckBox_Checked">
所有TextBox
和CheckBox
控件將繼承這些事件處理程序。在其他控件(如Grid
)中可以採用相同的方法,因此只有網格中的控件受到影響。
'TextBox_OnLostFocus'是一個'TextChanged'處理程序的奇怪名稱:) – hvd
@hvd - 哈哈對不起,我還在想[這個問題](http://stackoverflow.com/questions/18550588/listbox-not-highlighting - 選擇標籤更改#comment27288472_18550588)關於重點。使用相同的測試項目。 – keyboardP
不知道關於WPF,是要指出所有的控件都可以訂閱相同的方法(鑑於簽名textchanged和checkledchange可以是相同的),但這表明,而不僅僅是說。 – jmoreno
這樣做的一種方法是對CheckBox
和TextBox
類進行子類化並在這些類中實現所需的處理程序。
您仍然需要檢查您的應用程序,並將標準CheckBox
和TextBox
替換爲您的課程。
您可以在窗口或用戶控件上使用TextBoxBase.TextChanged =「MainWindow_OnTextChanged」。
在WPF中有所謂的類事件。把這種形式的構造函數:
EventManager.RegisterClassHandler(typeof(TextBox), TextBox.TextChangedEvent,
new RoutedEventHandler(AnyTextBox_OnTextChanged));
這樣你註冊一個處理程序TextChanged
事件的所有文本框。與複選框類似:
EventManager.RegisterClassHandler(typeof(CheckBox), CheckBox.CheckedEvent,
new RoutedEventHandler(AnyCheckBox_OnChecked));
- 1. 如何獲取CodenameOne TextField中每個更改的事件
- 2. 獲取更改事件
- 3. 獲取更改事件以在SyncFusion的SFAutoComplete控件中觸發
- 4. 如何在使用淘汰選擇控件時取消更改事件?
- 5. C#獲取文件更改事件
- 6. 每次更改文件時設置autocmd
- 7. 每次在Safari 5+中更新localStorage時,如何獲得一個事件觸發?
- 8. 每次觸發事件時更改所選元素的索引
- 9. ElasticSearch到Kafka事件 - 每次更改時使用Logstash
- 10. 單擊每次更改按鈕的兩個事件...但第三個事件僅在文檔加載時更改
- 11. 如何獲取每次PopUpManager.removePopup被觸發的事件?
- 12. 在更改事件時讀取console.log
- 13. 如何在另一個控制事件中獲取事件?
- 14. 如何從QFileSystemWatcher` directoryChanged`事件獲取已更改的文件名
- 15. 當文本控件失去焦點時如何獲取事件?
- 16. 每次創建組件或跟蹤onChanges事件的更改?
- 17. 如何在jQuery中獲取ul的內容更改事件
- 18. 如何在swift中獲取分辨率更改事件?
- 19. 如何在更改事件中獲取kendo組合框的值
- 20. 如何在jquery中創建字段上獲取更改事件
- 21. 如何獲取在AvalonEdit控件上更改文本的座標?
- 22. 獲取事件 - 但僅更改樹
- 23. 獲取iframe內容的更改事件?
- 24. Sencha Touch - 獲取更改事件記錄
- 25. 如何獲取上次在Python中修改文件的時間?
- 26. 組合框更改事件每次都在Excel中觸發VBA
- 27. 如何在mousedown和mousemove事件期間更改控件屬性?
- 28. 如何在jQuery Mobile中更改制表符時捕獲事件
- 29. C# - 如何獲取組合框中值更改事件中每行的值?
- 30. 在Angular 2中獲取系統小時更改事件
我可以知道爲什麼要爲此發生全局事件嗎? – Nitin