DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) Method

Definição

Reavalia o valor efetivo para a propriedade de dependência especificadaRe-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 DependencyProperty DependencyProperty DependencyProperty

O DependencyProperty identificador exclusivo da propriedade a invalidar.The DependencyProperty identifier of the property to invalidate.

Exemplos

O exemplo a seguir InvalidateProperty chama uma propriedade personalizada, sempre que as propriedades envolvidas na alteração dos cálculos da propriedade invalidada.The following example calls InvalidateProperty on a custom property, whenever properties that are involved in the invalidated property's calculations change. Essa é uma técnica alternativa para chamar o CoerceValue método, porque invalidar a propriedade também chamará qualquer registrado CoerceValueCallback.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

Comentários

Quando você chama InvalidateProperty, todas as funções associadas CoerceValueCallback e PropertyChangedCallback aplicáveis ou registradas para essa propriedade de dependência podem ser invocadas.When you call InvalidateProperty, any associated and applicable CoerceValueCallback or PropertyChangedCallback functions registered for that dependency property might be invoked.

Chamar InvalidateProperty em uma propriedade que tem seu conjunto de valores local não terá efeito, pois o valor local tem precedência sobre outras entradas do sistema de propriedades, exceto para animações.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. No entanto, você ClearValuepode chamar e InvalidateProperty, em seguida, chamar.However, you could call ClearValue, then call InvalidateProperty. Para obter mais informações, consulte Precedência do valor da propriedade de dependência.For more information, see Dependency Property Value Precedence.

A InvalidateProperty chamada não é necessariamente aplicável a muitos cenários de propriedade de dependência.Calling InvalidateProperty is not necessarily applicable for many dependency property scenarios. Se uma propriedade de dependência se tornar invalidada devido a alterações de valor em qualquer um dos constituintes, o sistema de propriedades invalida e reavalia a propriedade de dependência automaticamente.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. No entanto, ainda há alguns cenários apropriados InvalidateProperty em que é útil.However, there are still some appropriate scenarios where InvalidateProperty is useful. Em particular, você pode usar InvalidateProperty dentro do valor forçado ou retorno de chamada de propriedade alterado para uma propriedade de dependência diferente.In particular, you can use InvalidateProperty inside the coerce value or property changed callback for a different dependency property. Você também pode usar InvalidateProperty para forçar a reavaliação de uma associação em relação a uma fonte de dados que não é capaz de INotifyPropertyChanged implementar o mecanismo de notificação recomendado (talvez se você consumindo classes de dados que não podem ser derivadas de, ou onde os dados são estáticos membro).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).

Aplica-se a

Veja também