DependencyObject.InvalidateProperty(DependencyProperty) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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).