Compartir a través de


DependencyObject.InvalidateProperty(DependencyProperty) Método

Definición

Vuelve a evaluar el valor efectivo para la propiedad de dependencia especificada.

public:
 void InvalidateProperty(System::Windows::DependencyProperty ^ dp);
public void InvalidateProperty (System.Windows.DependencyProperty dp);
member this.InvalidateProperty : System.Windows.DependencyProperty -> unit
Public Sub InvalidateProperty (dp As DependencyProperty)

Parámetros

dp
DependencyProperty

Identificador de DependencyProperty de la propiedad que se debe invalidar.

Ejemplos

En el ejemplo siguiente se llama a InvalidateProperty en una propiedad personalizada, cada vez que cambian las propiedades implicadas en los cálculos de la propiedad invalidada. Se trata de una técnica alternativa a llamar al CoerceValue método , ya que la invalidación de la propiedad también llamará a cualquier registrado CoerceValueCallback.

static AreaButton()
{
    WidthProperty.OverrideMetadata(typeof(AreaButton), new FrameworkPropertyMetadata(new PropertyChangedCallback(InvalidateAreaProperty)));
    HeightProperty.OverrideMetadata(typeof(AreaButton), new FrameworkPropertyMetadata(new PropertyChangedCallback(InvalidateAreaProperty)));
}
static void InvalidateAreaProperty(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    d.InvalidateProperty(AreaProperty);
}
Shared Sub New()
    WidthProperty.OverrideMetadata(GetType(AreaButton), New FrameworkPropertyMetadata(New PropertyChangedCallback(AddressOf InvalidateAreaProperty)))
    HeightProperty.OverrideMetadata(GetType(AreaButton), New FrameworkPropertyMetadata(New PropertyChangedCallback(AddressOf InvalidateAreaProperty)))
End Sub
Private Shared Sub InvalidateAreaProperty(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
    d.InvalidateProperty(AreaProperty)
End Sub

Comentarios

Cuando se llama a InvalidateProperty, se pueden invocar las funciones asociadas y aplicables CoerceValueCallback o PropertyChangedCallback registradas para esa propiedad de dependencia.

Llamar a InvalidateProperty en una propiedad que tenga su valor local establecido no tendrá ningún efecto, ya que el valor local tiene prioridad sobre otras entradas del sistema de propiedades, excepto las animaciones. Sin embargo, podría llamar a ClearValuey, a continuación, llamar a InvalidateProperty. Para obtener más información, consulte Prioridad de los valores de propiedades de dependencia.

La llamada a InvalidateProperty no es necesariamente aplicable a muchos escenarios de propiedad de dependencia. Si una propiedad de dependencia se invalida debido a cambios de valor en cualquiera de los componentes, el sistema de propiedades invalida y vuelve a evaluar la propiedad de dependencia automáticamente. Sin embargo, todavía hay algunos escenarios adecuados en InvalidateProperty los que resulta útil. En concreto, puede usar InvalidateProperty dentro del valor de coerce o la devolución de llamada de cambio de propiedad para una propiedad de dependencia diferente. También puede usar InvalidateProperty para forzar la reevaluación de un enlace con un origen de datos que no puede implementar el mecanismo de notificación recomendado INotifyPropertyChanged (quizás si se consumen clases de datos que no se pueden derivar o de dónde los datos son un miembro estático).

Se aplica a

Consulte también