Bagikan melalui


DependencyObject.InvalidateProperty(DependencyProperty) Metode

Definisi

Mengevaluasi kembali nilai efektif untuk properti dependensi yang ditentukan.

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

Pengidentifikasi DependencyProperty properti untuk membatalkan validasi.

Contoh

Contoh berikut memanggil InvalidateProperty properti kustom, setiap kali properti yang terlibat dalam perhitungan properti yang tidak valid berubah. Ini adalah teknik alternatif untuk memanggil CoerceValue metode , karena membatalkan properti juga akan memanggil yang terdaftar 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

Keterangan

Ketika Anda memanggil InvalidateProperty, setiap fungsi atau yang terkait dan berlaku PropertyChangedCallbackCoerceValueCallback yang terdaftar untuk properti dependensi tersebut mungkin dipanggil.

Memanggil InvalidateProperty properti yang memiliki set nilai lokalnya tidak akan berpengaruh, karena nilai lokal lebih diutamakan daripada input sistem properti lainnya, kecuali untuk animasi. Namun, Anda dapat memanggil ClearValue, lalu memanggil InvalidateProperty. Untuk informasi selengkapnya, lihat Prioritas Nilai Properti Dependensi.

InvalidateProperty Panggilan belum tentu berlaku untuk banyak skenario properti dependensi. Jika properti dependensi menjadi tidak valid karena perubahan nilai di salah satu konstituen, sistem properti membatalkan dan mengevaluasi ulang properti dependensi secara otomatis. Namun, masih ada beberapa skenario yang sesuai di mana InvalidateProperty berguna. Secara khusus, Anda dapat menggunakan InvalidateProperty di dalam nilai koerce atau properti mengubah panggilan balik untuk properti dependensi yang berbeda. Anda juga dapat menggunakan InvalidateProperty untuk memaksa evaluasi ulang pengikatan terhadap sumber data yang tidak dapat menerapkan mekanisme pemberitahuan yang direkomendasikan INotifyPropertyChanged (mungkin jika menggunakan kelas data yang tidak dapat berasal, atau di mana data adalah anggota statis).

Berlaku untuk

Lihat juga