DependencyObject.InvalidateProperty(DependencyProperty) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Reavalia o valor efetivo da 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
O DependencyProperty identificador da propriedade a invalidar.
Exemplos
O exemplo seguinte recorre InvalidateProperty a uma propriedade personalizada, sempre que as propriedades envolvidas nos cálculos da propriedade invalidada mudam. Esta é uma técnica alternativa à chamada do CoerceValue método, porque invalidar a propriedade também chamará qualquer .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
Observações
Ao chamar InvalidateProperty, quaisquer funções associadas e aplicáveis CoerceValueCallbackPropertyChangedCallback registadas para essa propriedade de dependência podem ser invocadas.
Invocar InvalidateProperty uma propriedade que tem o seu conjunto de valores locais não terá efeito, porque o valor local tem precedência sobre outras entradas do sistema de propriedades, exceto nas animações. No entanto, pode ligar ClearValue, depois ligar InvalidatePropertypara . Para mais informações, consulte Precedência de Valor de Propriedade de Dependência.
A chamada InvalidateProperty não é necessariamente aplicável a muitos cenários de propriedades 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 automaticamente a propriedade de dependência. No entanto, ainda existem alguns cenários apropriados em que InvalidateProperty é útil. Em particular, pode usar InvalidateProperty dentro do valor de coerção ou do callback alterado da propriedade para uma propriedade de dependência diferente. Também pode usar InvalidateProperty para forçar a reavaliação de uma ligação a uma fonte de dados que não consegue implementar o mecanismo de notificação recomendado INotifyPropertyChanged (talvez se estiver a consumir classes de dados que não podem ser derivadas, ou onde os dados são um elemento estático).