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ında yer alan özellikler her değiştiğinde özel bir özelliği çağırır InvalidateProperty . Özelliği geçersiz kılındığı için, bu yöntemi çağırmak CoerceValue için alternatif bir tekniktir.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

Açıklamalar

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

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

Çağrı InvalidateProperty birçok bağımlılık özelliği senaryosu için geçerli olmayabilir. Bir 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 yine de yararlı olan InvalidateProperty bazı uygun senaryolar 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 . Ayrıca, önerilen InvalidateProperty bildirim mekanizmasını uygulayamayan bir veri kaynağına (belki de türetilemeyen veri sınıfları kullanılıyorsa veya verilerin statik üye olduğu durumlarda) bir bağlamanın yeniden değerlendirilmesini zorlamak için de kullanabilirsinizINotifyPropertyChanged.

Şunlara uygulanır

Ayrıca bkz.