DependencyObject.InvalidateProperty(DependencyProperty) Metoda

Definice

Znovu vyhodnotí efektivní hodnotu pro zadanou vlastnost závislosti.

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)

Parametry

dp
DependencyProperty

Identifikátor DependencyProperty vlastnosti, která má být neplatná.

Příklady

Následující příklad volá InvalidateProperty vlastní vlastnost, kdykoli se změní vlastnosti, které jsou součástí neplatných výpočtů vlastnosti. Toto je alternativní technika volání CoerceValue metody, protože zneplatnění vlastnosti bude také volat všechny registrované 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

Poznámky

Při volání InvalidatePropertymůže být vyvolána jakákoli přidružená a použitelná CoerceValueCallback funkce nebo PropertyChangedCallback funkce zaregistrované pro tuto vlastnost závislostí.

Volání InvalidateProperty vlastnosti, která má nastavenou místní hodnotu, nebude mít žádný vliv, protože místní hodnota má přednost před jinými vstupy systému vlastností s výjimkou animací. Mohli byste ale zavolat , pak zavolat ClearValueInvalidateProperty. Další informace naleznete v tématu Priorita hodnoty vlastnosti závislostí.

Volání InvalidateProperty nemusí nutně platit pro mnoho scénářů vlastností závislostí. Pokud se vlastnost závislosti zneplatní kvůli změnám hodnoty v některé z prvků, systém vlastností zneplatní a znovu vyhodnotí vlastnost závislosti automaticky. Existují však i některé vhodné scénáře, kde InvalidateProperty je užitečné. Konkrétně můžete použít InvalidateProperty uvnitř hodnoty převodu nebo vlastnosti změněné zpětné volání pro jinou vlastnost závislostí. Můžete také použít InvalidateProperty k vynucení opětovného vyhodnocení vazby vůči zdroji dat, který nedokáže implementovat doporučený INotifyPropertyChanged mechanismus oznámení (například pokud spotřebovávají třídy dat, které nelze odvodit nebo kde jsou data statickým členem).

Platí pro

Viz také