wpf dependency-properties

wpf - Escuche el evento cambiado DependencyProperty y obtenga el valor anterior



dependency-properties (2)

Tengo el siguiente código para suscribirme al evento de VisiblePosition propiedad para la propiedad VisiblePosition de la clase Column :

DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(ColumnBase.VisiblePositionProperty, typeof(Column)); if (dpd != null) { dpd.AddValueChanged(col, ColumnVisiblePositionChangedHandler); }

Aquí está la definición del método ColumnVisiblePositionChangedHandler :

static internal void ColumnVisiblePositionChangedHandler(object sender, EventArgs e)

El problema es que necesito obtener el valor antiguo de la propiedad. ¿Cómo puedo hacer eso?

Gracias,


Desafortunadamente, no obtiene información de valor antiguo al registrar el controlador de eventos de propiedades modificadas de esta manera.

Una solución alternativa es almacenar el valor de la propiedad en algún lugar (este es su valor ''antiguo'') y luego compararlo con el valor actual en el controlador de eventos.

Otra solución es crear su propia propiedad de dependencia (DP) y crear un enlace entre su DP y el DP del control. Esto le dará una notificación de cambio en el estilo WPF.

Aquí hay un artículo sobre esto .


Puede hacerlo al registrar su propiedad de dependencia en el controlador de eventos adjunto. A continuación encontrará la sintaxis de una propiedad de dependencia y cómo obtener el valor anterior en el controlador de eventos 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 }