首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试PropertyChanged

调试PropertyChanged
EN

Stack Overflow用户
提问于 2014-09-13 06:09:51
回答 1查看 1.4K关注 0票数 1

我有一个名为ViewModel的类,它的代码如下:

代码语言:javascript
复制
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事件中发生了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-13 07:53:28

好吧,那我们就试试推测吧:)

首先,我将以如下方式实现它,正如R#所做的那样。

代码语言:javascript
复制
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分解并在那里进行跟踪。

希望能帮上忙

干杯

斯田

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25820348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档