Я реализую INotifyPropertyChanged в базовом классе следующим образом:
public class NotifyPropertyChangedBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void RaisePropertyChanged(string propertyName)
{
var propChangedHandler = PropertyChanged;
if (propChangedHandler != null)
{
var args = new PropertyChangedEventArgs(propertyName);
propChangedHandler(this, args);
}
}
}
Я использую его следующим образом:
RaisePropertyChanged("Name");
Я получаю исключение NullReferenceException, пока аргументы, "this" и обработчик НЕ равны NULL.Кто-нибудь может пролить свет на это?
Спасибо.
-> Полная трассировка стека исключения: http://pastebin.com/bH9FeurJ
ОБНОВЛЕНИЕ Исключение возникает, когдаЯ перезаписываю экземпляр класса, который содержит это свойство.Упрощенный пример:
public class Person : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
RaisePropertyChanged("Name");
}
}
// More properties etc.
}
-snip-
public class ViewModel
{
private Person _dummyPerson;
public Person DummyPerson
{
get { return _dummyPerson; }
set
{
_dummyPerson = value;
RaisePropertyChanged("DummyPerson");
}
}
public void Foo()
{
DummyPerson = new DummyPerson();
// this line throws the NRE, strangly enough the very FIRST time it works fine
}
}
-snip-
Я использую это свойство DummyPerson
и Name
для привязки данных кпользовательский интерфейс.Вторая и все последующие попытки приводят к NullReferenceException
.