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

Definizione

Valuta di nuovo il valore effettivo della proprietà di dipendenza specificata.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)

Parametri

dp
DependencyProperty DependencyProperty DependencyProperty DependencyProperty

L’identificatore DependencyProperty della proprietà di dipendenza da invalidare.The DependencyProperty identifier of the property to invalidate.

Esempi

Nell'esempio seguente viene InvalidateProperty chiamato su una proprietà personalizzata, ogni volta che vengono modificate le proprietà incluse nei calcoli della proprietà invalidata.The following example calls InvalidateProperty on a custom property, whenever properties that are involved in the invalidated property's calculations change. Si tratta di una tecnica alternativa alla chiamata CoerceValue al metodo, perché l'invalidamento della proprietà chiamerà anche CoerceValueCallbackqualsiasi oggetto registrato.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

Commenti

Quando si chiama InvalidateProperty, è possibile che vengano CoerceValueCallback richiamate tutte le funzioni associate e applicabili o PropertyChangedCallback registrate per la proprietà di dipendenza.When you call InvalidateProperty, any associated and applicable CoerceValueCallback or PropertyChangedCallback functions registered for that dependency property might be invoked.

La InvalidateProperty chiamata di su una proprietà con il relativo set di valori locali non avrà alcun effetto, perché il valore locale ha la precedenza su altri input del sistema di proprietà, ad eccezione delle animazioni.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. Tuttavia, è possibile chiamare ClearValue, quindi chiamare InvalidateProperty.However, you could call ClearValue, then call InvalidateProperty. Per altre informazioni, vedere Precedenza del valore della proprietà di dipendenza.For more information, see Dependency Property Value Precedence.

La InvalidateProperty chiamata a non è necessariamente applicabile per molti scenari di proprietà di dipendenza.Calling InvalidateProperty is not necessarily applicable for many dependency property scenarios. Se una proprietà di dipendenza viene invalidata a causa di modifiche del valore in uno qualsiasi dei costituenti, il sistema di proprietà invalida e valuta nuovamente la proprietà di dipendenza 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. Tuttavia, esistono ancora alcuni scenari appropriati in cui InvalidateProperty è utile.However, there are still some appropriate scenarios where InvalidateProperty is useful. In particolare, è possibile usare InvalidateProperty all'interno del callback del valore di coercizione o della proprietà modificata per un'altra proprietà di dipendenza.In particular, you can use InvalidateProperty inside the coerce value or property changed callback for a different dependency property. È inoltre possibile utilizzare InvalidateProperty per forzare la rivalutazione di un'associazione rispetto a un'origine dati che non è in grado di INotifyPropertyChanged implementare il meccanismo di notifica consigliato, ad esempio se si utilizzano classi di dati che non possono essere derivate da o dove i dati sono statici 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).

Si applica a

Vedi anche