DependencyObject.InvalidateProperty(DependencyProperty) Yöntem

Tanım

Belirtilen bağımlılık özelliği için geçerli değeri yeniden değerlendirir.

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)

Parametreler

dp
DependencyProperty

Geçersiz DependencyProperty kılınacak özelliğin tanımlayıcısı.

Örnekler

Aşağıdaki örnek, geçersiz kılınan özelliğin hesaplamalarına katılan özellikler her değiştiğinde özel bir özelliği çağırır InvalidateProperty . Bu, yöntemi çağırmak CoerceValue için alternatif bir tekniktir, çünkü özelliği geçersiz kılındığı için kayıtlı CoerceValueCallbackherhangi bir de çağrılır.

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

Açıklamalar

çağrısı InvalidatePropertyyaptığınızda, ilgili bağımlılık özelliği için kaydedilen ilişkili ve uygulanabilir CoerceValueCallback işlevler PropertyChangedCallback çağrılabilir.

InvalidateProperty Yerel değer kümesine sahip bir özelliği çağırmanın hiçbir etkisi olmaz, çünkü yerel değer animasyonlar dışında diğer özellik sistemi girişlerinden önceliklidir. Ancak, çağrısı ClearValueyapabilir ve ardından öğesini çağırabilirsiniz InvalidateProperty. Daha fazla bilgi için bkz . Bağımlılık Özelliği Değer Önceliği.

Çağrının InvalidateProperty birçok bağımlılık özelliği senaryosu için geçerli olması şart değildir. Bağımlılık özelliği, bileşenlerden herhangi birinde yapılan değer değişiklikleri nedeniyle geçersiz kılınırsa, özellik sistemi bağımlılık özelliğini otomatik olarak geçersiz kılır ve yeniden değerlendirir. Ancak, yararlı olan InvalidateProperty bazı uygun senaryolar hala vardır. Özellikle, farklı bir bağımlılık özelliği için zorlama değerinin veya özelliğin değiştirilmiş geri çağırmasının içinde kullanabilirsiniz InvalidateProperty . Önerilen bildirim mekanizmasını uygulayamayan INotifyPropertyChanged bir veri kaynağında bağlamanın yeniden değerlendirilmesini zorlamak için de kullanabilirsiniz InvalidateProperty (belki de türetilemeyen veri sınıflarını kullanıyorsanız veya verilerin statik üye olduğu durumlarda).

Şunlara uygulanır

Ayrıca bkz.