如何通过SL中的RaisePropertyChanged()检查我的事件处理程序是否被取消?

时间:2010-12-17 10:35:18

标签: c# .net silverlight silverlight-4.0 prism

与我的同事一起,我们遇到了SilverLight关于Prism NotificationObject的问题。

我们的问题是;

  • 我们将事件处理程序绑定到我们的DependencyProperties
  • 之一
  • 然后我们在setter中调用RaiseChangedEvent
  • 当我们调试时,我们看到eventhandler被分配,并且当proerty值被更改时调用它。
  • 但是当我们在UI中使用agian来追逐属性值时,这次我们看到我们的事件处理程序没有被调用。

所以我们要确定:

  • 如果事件处理程序仍然绑定(除非它不为null,我们认为它是绑定的)
  • 如果它被绑定为什么事件被取消或为什么我的匿名事件处理程序方法不再被调用(没有命中断点)

    您可以在下面看到代码段。

    我的问题是:

    有没有办法看到为什么RaisePropertyChanged(“MyProperty”);是不是调用了一个名为Requestor的DependencyProperty的eventhandler assigne?有什么建议吗?

    如果我概括:是否可以进入RaisePropertyChanged(“Requestor”);打电话给它做什么以及它退出的地方

请参阅我的代码段:

// My dependency property in my ViewModel
public CompanyEntity MyProperty
{
    get { return _MyProperty; }
    set
    {
        _MyProperty = value;
        RaisePropertyChanged("MyProperty");
    }
}


// And my Dependency Property Event handler setting in my user control:
public static readonly DependencyProperty FactoryProperty =
DependencyProperty.Register("Factory", typeof (FactoryEntity), typeof (FactoryPicker),
    new PropertyMetadata((x, y) =>
            {
                // Some settings and processes
            }));

2 个答案:

答案 0 :(得分:0)

只是一个猜测:你不必像http://forums.silverlight.net/forums/p/57516/146193.aspx中所解释的那样强迫吗?

答案 1 :(得分:0)

检查你是否在绑定时错过了Mode = TwoWay声明。