我正在尝试记录传统WPF应用程序中的所有用户交互(按钮单击,列表选择更改等)。我通过继承所有窗口控件类(Button,TextBox,ComboBox等)并覆盖某些函数(例如Button子类中的OnClick())来记录这些事件发生的时间。在WPF中跳过数据绑定触发的事件
问题几乎是应用程序中的所有控件都使用数据绑定,并且当页面加载时,它会为所有这些元素启动并自动调用事件处理程序。我只想在用户更改这些控件时记录这些内容。
当我登录时,是否有一种优雅的方式可以跳过由数据绑定触发的事件?
我正在尝试记录传统WPF应用程序中的所有用户交互(按钮单击,列表选择更改等)。我通过继承所有窗口控件类(Button,TextBox,ComboBox等)并覆盖某些函数(例如Button子类中的OnClick())来记录这些事件发生的时间。在WPF中跳过数据绑定触发的事件
问题几乎是应用程序中的所有控件都使用数据绑定,并且当页面加载时,它会为所有这些元素启动并自动调用事件处理程序。我只想在用户更改这些控件时记录这些内容。
当我登录时,是否有一种优雅的方式可以跳过由数据绑定触发的事件?
在事件处理程序中,构造一个System.Diagnostics.StackTrace
,其中包含从事件处理程序一直到应用程序的Main方法的所有堆栈帧。
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace();
System.Diagnostics.Debug.WriteLine(trace.ToString());
采取SelectionChanged
事件为一个例子,如果该事件由数据结合而触发,应该有一些帧看起来像
在System.Windows.Controls.ItemsControl.OnItemsSourceChanged(DependencyObject的d, DependencyPropertyChangedEventArgs E)
...在System.Windows.Controls.ItemsControl.set_ItemsSource(IEnumerable的值)
像你在说哪些事件? – AnjumSKhan