У меня есть viewmodel с именем EmployeeViewModel, который унаследован от ViewModelBase. Вот реализация ViewModelBase.
public event PropertyChangedEventHandler PropertyChanged;
public void FirePropertyChanged(string propertyname)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyname));
}
public void FirePropertyChanged<TValue>(Expression<Func<TValue>> propertySelector)
{
if (PropertyChanged != null)
{
var memberExpression = propertySelector.Body as MemberExpression;
if (memberExpression != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(memberExpression.Member.Name));
}
}
}
Мой EmployeeViewModel имеет имя свойства GridResults, которое связано с сеткой при просмотре, вот определение свойства.
public PagedCollectionView GridResults
{
get { return _gridResults; }
set
{
_gridResults = value;
FirePropertyChanged(()=>GridResults);
}
}
Теперь, когда я устанавливаю значение GridResults где-то в коде в EmployeeViewModel, оно запускает событие изменения свойства и переходит в
FirePropertyChanged (Expression> propertySelector)
но внутри этого метода его PropertyChangedEventHandler всегда остается нулевым и предотвращает полное выполнение метода. В конечном счете, моя таблица не остается незамеченной, поскольку ее базовый источник предметов был изменен.
Я что-то упустил?
Заранее благодарен
-K9