Прислушайтесь к событию DependencyProperty и получите старое значение
У меня есть следующий код для подписки на событие с измененными свойствами для свойства 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)
Проблема в том, что мне нужно получить старое значение свойства. Как это сделать?
Спасибо,
Ответы
Ответ 1
К сожалению, вы не получаете старую информацию о значении при регистрации свойства, обработчика события таким образом.
Одним из способов является сохранение значения свойства где-нибудь (это ваше "старое" значение), а затем сравнить его с текущим значением в обработчике событий.
Другим обходным решением является создание собственного свойства зависимостей (DP) и создание привязки между вашим DP и DP. Это даст вам уведомление об изменении в стиле WPF.
Вот статья об этом.
Ответ 2
Это можно сделать при регистрации свойства зависимостей в подключенном обработчике событий. Ниже приведен синтаксис свойства зависимостей и как получить старое значение в обработчике событий 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
}