我有一个名为ViewModel的类,它的代码如下:
public event PropertyChangedEventHandler PropertyChanged;
var copyOfPropertyChangedEvent = PropertyChanged;
if (copyOfPropertyChangedEvent != null)
{
var args = ViewModel.GetPropertyChangedEventArgs(propertyName);
copyOfPropertyChangedEvent(this, args);
}当我调试它时,我想看看copyOfPropertyChangedEvent事件中发生了什么。当我按F12时,它会带我到一行: var copyOfPropertyChangedEvent = PropertyChanged;当我搜索PropertyChanged的所有用法时,Visual会给我一些用法,当我将断点放在所有这些用法中时,它们都不会被击中。
我如何才能看到在PropertyChanged事件中发生了什么?
发布于 2014-09-13 07:53:28
好吧,那我们就试试推测吧:)
首先,我将以如下方式实现它,正如R#所做的那样。
public class YourViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator] // remove if no R#
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
// .....
}现在,我确信您知道,事件包含要调用的方法列表。框架使用PropertyChanged向GUI发出信号,表示必须执行对所述属性的重新评估(绑定、运行转换器等,然后重新绘制),您还可以将自己连接到它上。如果它是空的,那么可能UI没有上钩-这就是为什么我在那里要求更多的信息。它是INotifyPropertyChanged接口的一部分
无论如何,如果您只是好奇它如何内部工作,您可以安装RedGate反射器,这将允许您进入任何非本机代码。或者,您可以将System.dll分解并在那里进行跟踪。
希望能帮上忙
干杯
斯田
https://stackoverflow.com/questions/25820348
复制相似问题