Partilhar via


DependencyObject.InvalidateProperty(DependencyProperty) Método

Definição

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

O DependencyProperty identificador exclusivo da propriedade a invalidar.

Exemplos

O exemplo a seguir chama InvalidateProperty em uma propriedade personalizada, sempre que as propriedades envolvidas nos cálculos da propriedade invalidada forem alteradas. Essa é uma técnica alternativa para chamar o CoerceValue método , pois invalidar a propriedade também chamará qualquer 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

Comentários

Quando você chama InvalidateProperty, quaisquer funções associadas e aplicáveis CoerceValueCallback ou PropertyChangedCallback registradas para essa propriedade de dependência podem ser invocadas.

Chamar InvalidateProperty em uma propriedade que tenha seu valor local definido não terá efeito, pois o valor local tem precedência sobre outras entradas do sistema de propriedades, exceto para animações. No entanto, você pode chamar ClearValuee, em seguida, chamar InvalidateProperty. Para obter mais informações, consulte Precedência do valor da propriedade de dependência.

A chamada InvalidateProperty não é necessariamente aplicável a muitos cenários de propriedade de dependência. Se uma propriedade de dependência for 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. No entanto, ainda há alguns cenários apropriados em que InvalidateProperty é útil. Em particular, você pode usar InvalidateProperty dentro do valor de coerção ou do retorno de chamada alterado de propriedade para uma propriedade de dependência diferente. 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 implementar o mecanismo de notificação recomendado INotifyPropertyChanged (talvez se consumir classes de dados que não podem ser derivadas ou de onde os dados são um membro estático).

Aplica-se a

Confira também