Прослушайте событие DependencyProperty changed и получите старое значение
у меня есть следующий код для подписки на событие изменения свойства для VisiblePosition
собственность Column
класс:
DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(ColumnBase.VisiblePositionProperty, typeof(Column));
if (dpd != null)
{
dpd.AddValueChanged(col, ColumnVisiblePositionChangedHandler);
}
вот определение ColumnVisiblePositionChangedHandler
способ:
static internal void ColumnVisiblePositionChangedHandler(object sender, EventArgs e)
проблема в том, что мне нужно получить старое значение свойства. Как мне это сделать?
спасибо,
2 ответов
к сожалению, вы не получаете старую информацию о значении при регистрации обработчика событий с измененным свойством таким образом.
один обходной путь-сохранить значение свойства где-нибудь (это ваше "старое" значение), а затем сравнить его с текущим значением в обработчике событий.
другим обходным путем является создание собственного свойства зависимостей (DP) и создание привязки между вашим DP и DP элемента управления. Это даст вам уведомление об изменении в стиле WPF.
здесь статьи об этом.
Это можно сделать при регистрации свойства зависимостей в обработчике вложенных событий. Ниже приведен синтаксис свойства зависимостей и как получить старое значение на PropertyChanged
обработчик событий:
//Declaration of property
public static readonly DependencyProperty MyNameProperty =
DependencyProperty.Register("MyName", typeof(PropertyType),
typeof(ClassName),
new PropertyMetadata(null,
new PropertyChangedCallback(MyNameValueChanged)));
//PropertyChanged event handler to get the old value
private static void MyNameValueChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs)
{
object oldValue = eventArgs.OldValue; //Get the old value
}