我有一个很长的表格,里面有一堆 CheckBox,偶尔还有一些 TextBox 输入。我希望在任何控件发生更改(即,任何 CheckBox 状态发生更改或任何 TextBox.Text 被更改)时引发一个事件。是否有一种全局方法可以做到这一点,而不必为每个控件添加事件处理程序?
问问题
489 次
4 回答
7
WPF 及其声明性的优点之一是事件沿可视树继承。
<Window x:Class="MyApplication.MainWindow"
....
TextBox.TextChanged="TextBox_TextChanged" CheckBox.Checked="CheckBox_Checked">
所有TextBox
和CheckBox
控件都将继承这些事件处理程序。可以在其他控件中采用相同的方法,例如Grid
只有 Grid 中的控件受到影响。
于 2013-08-31T18:42:40.937 回答
1
WPF中有所谓的类事件。把它放在表单的构造函数中:
EventManager.RegisterClassHandler(typeof(TextBox), TextBox.TextChangedEvent,
new RoutedEventHandler(AnyTextBox_OnTextChanged));
这样您就可TextChanged
以为所有文本框的事件注册一个处理程序。与复选框类似:
EventManager.RegisterClassHandler(typeof(CheckBox), CheckBox.CheckedEvent,
new RoutedEventHandler(AnyCheckBox_OnChecked));
于 2013-08-31T18:50:31.150 回答
1
一种方法是继承CheckBox
和TextBox
类并在这些类中实现所需的处理程序。
您仍然需要通过您的应用程序并替换标准CheckBox
和TextBox
您的课程。
于 2013-08-31T18:19:58.633 回答
1
您可以在窗口或用户控件上使用 TextBoxBase.TextChanged="MainWindow_OnTextChanged"。
于 2013-08-31T18:40:13.677 回答