Я довольно новичок в WPF, но единственный очевидный способ сделать это - добавить дополнительные методы set в модель, которые изменяют резервное хранилище без непосредственного изменения свойства и, таким образом, запускают Событие PropertyChanged. Чтобы удалить дублирование, установщик свойств должен, вероятно, также вызывать эти методы, и должен быть логический аргумент fireChangedEvent. Примерно так:
public string SomeThing
{
get { return _someThing; }
set { SetSomeThing(value, true); }
}
public void SetSomeThing(string value, bool fireChangedEvent)
{
_someThing = value;
if(fireChangedEvent)
{
NotifyPropertyChanged("SomeThing");
}
}
Тогда в другом модуле это будет
public void DoStuff
{
// ...
model.SetSomeThing("foo",false);
// ...
}
Это не элегантный метод, который я знаю, и я надеюсь, что кто-то еще может придумать что-нибудь более умное, но я не могу придумать хороший способ выяснить изнутри установщика свойств, что именно устанавливает это свойство.
Надеюсь, это хотя бы обходное решение.