Подтвердить что ты не робот

Прислушайтесь к событию 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)

Проблема в том, что мне нужно получить старое значение свойства. Как это сделать?

Спасибо,

4b9b3361

Ответ 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
}