DependencyObject.InvalidateProperty(DependencyProperty) Methode

Definition

Wertet den effektiven Wert für die angegebene Abhängigkeitseigenschaft erneut aus.

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)

Parameter

dp
DependencyProperty

Der DependencyProperty-Bezeichner der neu zu berechnenden Eigenschaft.

Beispiele

Im folgenden Beispiel wird eine benutzerdefinierte Eigenschaft aufgerufen InvalidateProperty , wenn sich eigenschaften, die an den Berechnungen der ungültigen Eigenschaft beteiligt sind, ändern. Dies ist eine alternative Methode zum Aufrufen der CoerceValue Methode, da das Ungültigen der Eigenschaft auch alle registrierten CoerceValueCallbackAufrufe aufruft.

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

Hinweise

Wenn Sie alle für diese Abhängigkeitseigenschaft registrierten zugeordneten und anwendbaren CoerceValueCallback Funktionen PropertyChangedCallback aufrufenInvalidateProperty, werden möglicherweise aufgerufen.

Das Aufrufen InvalidateProperty einer Eigenschaft mit seinem lokalen Wertsatz hat keine Auswirkung, da der lokale Wert Vorrang vor anderen Eigenschaftensystemeingaben hat, außer bei Animationen. Sie können jedoch anrufen ClearValueund dann anrufen InvalidateProperty. Weitere Informationen finden Sie unter Priorität von Abhängigkeitseigenschaftswerten.

Das Aufrufen InvalidateProperty gilt nicht unbedingt für viele Abhängigkeitseigenschaftsszenarien. Wenn eine Abhängigkeitseigenschaft aufgrund von Wertänderungen in einem der Bestandteile ungültig wird, wird das Eigenschaftssystem ungültig und wertet die Abhängigkeitseigenschaft automatisch neu aus. Es gibt jedoch noch einige geeignete Szenarien, in denen InvalidateProperty es nützlich ist. Insbesondere können Sie innerhalb des Koercewerts oder der Eigenschaft geänderten Rückruf für eine andere Abhängigkeitseigenschaft verwenden InvalidateProperty . Sie können auch die InvalidateProperty erneute Auswertung einer Bindung gegen eine Datenquelle erzwingen, die den empfohlenen INotifyPropertyChanged Benachrichtigungsmechanismus nicht implementieren kann (vielleicht wenn Datenklassen verwendet werden können, die nicht abgeleitet werden können, oder wenn die Daten ein statisches Element sind).

Gilt für

Siehe auch