WinRT上的Delegate.Target为null

时间:2013-02-20 14:55:10

标签: xaml delegates windows-runtime

我们知道,Delegate有两个属性,一个用于方法infor,另一个用于目标对象。但在WinRT上却很奇怪。 如果视图模型实现INotifyPropertyChanged如下:

public class PropertyChangedViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged
    {
        add { /*some code to add handler of value*/ }
        remove { /*some code to removehandler of value*/ }
    }
}

在方法“add”和“remove”中我找到了值。当XAML绑定的内部代码使用此事件时,该目标为null。 也就是说,如果我在xaml文件上绑定视图模型的某些属性,那么winrt将自动注册此视图模型的事件PropertyChanged,然后调用add方法,但是我在此添加中放置了一个断点方法并找到Target of value为null。 我正在实现一个跨平台的mvvm库(对于wpf,winrt,silverlight和wp 7+)所以我不能使用PropertyChangedEventManager,我必须手动保持对目标的弱引用,然后用目标调用方法,不幸的是,targer是null,而方法不是静态方法,所以当我稍后对这个事件进行triger时,我会得到异常。 有没有解决方法?

谢谢!

0 个答案:

没有答案