Ваше решение, вероятно, будет зависеть от того, хотите ли вы изменить определение самого объекта данных. Если вы можете изменить объект данных, то вы можете добавить флаг, который контролирует, разрешено ли обновление. Затем вы можете установить это свойство в ответ на событие hover. Кроме того, любые события изменения свойств будут помещаться в очередь и запускаться после повторного включения обновлений (при условии, что вам нужно именно такое поведение).
Если вы не можете изменить объект, рассмотрите возможность создания вокруг него оболочки, поддерживающей это.
Вот пример того, как отложить события:
class DataObject
{
private bool _canUpdate = true;
List<string> propertiesChangedDelayed = new List<string>();
public bool CanUpdate
{
get { return _canUpdate; }
set
{
if (value != _canUpdate) {
_canUpdate = value;
if (_canUpdate)
NotifyPropertyChangedDelayed();
}
}
}
protected void NotifyPropertyChanged(string property)
{
if (CanUpdate) {
// fire event
} else {
propertiesChangedDelayed.Add(property);
}
}
private void NotifyPropertyChangedDelayed()
{
foreach (string property in propertiesChangedDelayed)
{
NotifyPropertyChanged(property);
}
propertiesChangedDelayed.Clear();
}
}