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á se má zneplatnit.

Příklady

Následující příklad volá InvalidateProperty vlastní vlastnost pokaždé, když se změní vlastnosti, které jsou zapojeny do 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 registrované pro tuto vlastnost závislosti.

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í. Ale můžete zavolat , pak zavolat ClearValueInvalidateProperty. Další informace naleznete v tématu Priorita hodnoty vlastnosti závislosti.

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é ze složek, systém vlastností zneplatní a znovu vyhodnotí vlastnost závislosti automaticky. Existují ale i některé vhodné scénáře, ve kterých 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ávislosti. 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í datové třídy, ze kterých nelze odvozovat, nebo kde jsou data statickým členem).

Platí pro

Viz také