DependencyObject.InvalidateProperty(DependencyProperty) Método

Definición

Vuelve a evaluar el valor efectivo para la propiedad de dependencia especificada.Re-evaluates the effective value for the specified dependency property.

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.The DependencyProperty identifier of the property to invalidate.

Ejemplos

En el ejemplo siguiente se llama a InvalidateProperty en una propiedad personalizada, siempre que cambian las propiedades implicadas en los cálculos de la propiedad invalidada.The following example calls InvalidateProperty on a custom property, whenever properties that are involved in the invalidated property's calculations change. Se trata de una técnica alternativa a llamar al método CoerceValue, porque la invalidación de la propiedad también llamará a cualquier @no__t registrado-1.This is an alternative technique to calling the CoerceValue method, because invalidating the property will also call any registered 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, es posible que se invoquen todas las funciones asociadas y aplicables CoerceValueCallback o PropertyChangedCallback registradas para esa propiedad de dependencia.When you call InvalidateProperty, any associated and applicable CoerceValueCallback or PropertyChangedCallback functions registered for that dependency property might be invoked.

Llamar a InvalidateProperty en una propiedad que tenga su conjunto de valores local no tendrá ningún efecto, ya que el valor local tiene prioridad sobre otras entradas del sistema de propiedades, excepto en el caso de animaciones.Calling InvalidateProperty on a property that has its local value set will have no effect, because the local value takes precedence over other property system inputs, except for animations. Sin embargo, puede llamar a ClearValue y, a continuación, llamar a InvalidateProperty.However, you could call ClearValue, then call InvalidateProperty. Para obtener más información, consulte Prioridad de los valores de propiedades de dependencia.For more information, see Dependency Property Value Precedence.

La llamada a InvalidateProperty no es necesariamente aplicable a muchos escenarios de propiedades de dependencia.Calling InvalidateProperty is not necessarily applicable for many dependency property scenarios. Si una propiedad de dependencia se invalida debido a los cambios de valor en cualquiera de los componentes, el sistema de propiedades invalida y vuelve a evaluar automáticamente la propiedad de dependencia.If a dependency property becomes invalidated because of value changes in any of the constituents, the property system invalidates and re-evaluates the dependency property automatically. Sin embargo, todavía hay algunos escenarios adecuados en los que InvalidateProperty es útil.However, there are still some appropriate scenarios where InvalidateProperty is useful. En concreto, puede usar InvalidateProperty dentro de la devolución de llamada de valor de coerción o cambio de propiedad para una propiedad de dependencia diferente.In particular, you can use InvalidateProperty inside the coerce value or property changed callback for a different dependency property. También puede usar InvalidateProperty para forzar la reevaluación de un enlace en un origen de datos que no pueda implementar el mecanismo de notificación INotifyPropertyChanged recomendado (quizás si se usan clases de datos que no se pueden derivar de o donde los datos son un miembro estático).You can also use InvalidateProperty to force re-evaluation of a binding against a data source that is not able to implement the recommended INotifyPropertyChanged notification mechanism (perhaps if consuming data classes that cannot be derived from, or where the data is a static member).

Se aplica a

Consulte también: