DependencyObject.InvalidateProperty(DependencyProperty) Metoda

Definicja

Ponownie oblicza efektywną wartość dla określonej właściwości zależności.

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

Identyfikator DependencyProperty właściwości do unieważnienia.

Przykłady

Poniższy przykład wywołuje InvalidateProperty właściwość niestandardową za każdym razem, gdy właściwości biorące udział w unieważnionych obliczeniach właściwości zmieniają się. Jest to alternatywna technika wywoływania metody, ponieważ unieważnienie właściwości spowoduje również wywołanie dowolnej zarejestrowanej CoerceValueCoerceValueCallbackmetody .

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

Uwagi

Po wywołaniu wywołania InvalidatePropertymoże zostać wywołana dowolna skojarzona i odpowiednia CoerceValueCallback funkcja lub PropertyChangedCallback funkcje zarejestrowane dla tej właściwości zależności.

Wywołanie InvalidateProperty właściwości, która ma zestaw wartości lokalnych, nie będzie miało wpływu, ponieważ wartość lokalna ma pierwszeństwo przed innymi danymi wejściowymi systemu właściwości, z wyjątkiem animacji. Można jednak wywołać metodę , a następnie wywołać ClearValuemetodę InvalidateProperty. Aby uzyskać więcej informacji, zobacz Pierwszeństwo wartości właściwości zależności.

Wywoływanie InvalidateProperty nie musi dotyczyć wielu scenariuszy właściwości zależności. Jeśli właściwość zależności zostanie unieważniona z powodu zmian wartości w dowolnych składnikach, system właściwości unieważnia i automatycznie ocenia właściwość zależności. Jednak nadal istnieją pewne odpowiednie scenariusze, w których InvalidateProperty jest to przydatne. W szczególności można użyć InvalidateProperty wewnątrz wartości coerce lub właściwości zmienione wywołanie zwrotne dla innej właściwości zależności. Można również użyć InvalidateProperty polecenia , aby wymusić ponownej oceny powiązania ze źródłem danych, które nie może zaimplementować zalecanego INotifyPropertyChanged mechanizmu powiadomień (być może jeśli korzystanie z klas danych, z których nie można pochodzić, lub gdzie dane są elementem członkowskim statycznym).

Dotyczy

Zobacz też