2017-04-23 68 views
0

我正在尝试记录传统WPF应用程序中的所有用户交互(按钮单击,列表选择更改等)。我通过继承所有窗口控件类(Button,TextBox,ComboBox等)并覆盖某些函数(例如Button子类中的OnClick())来记录这些事件发生的时间。在WPF中跳过数据绑定触发的事件

问题几乎是应用程序中的所有控件都使用数据绑定,并且当页面加载时,它会为所有这些元素启动并自动调用事件处理程序。我只想在用户更改这些控件时记录这些内容。

当我登录时,是否有一种优雅的方式可以跳过由数据绑定触发的事件?

+0

像你在说哪些事件? – AnjumSKhan

回答

1

在事件处理程序中,构造一个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的值)

相关问题