DependencyObject.InvalidateProperty(DependencyProperty) Metoda

Definicja

Ponowna ocenuje wartość efektywną dla określonej właściwości zależności.Re-evaluates the effective value for the specified dependency property.

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

@No__t_0 identyfikator właściwości do unieważnienia.The DependencyProperty identifier of the property to invalidate.

Przykłady

Poniższy przykład wywołuje InvalidateProperty na właściwości niestandardowej, za każdym razem, gdy właściwości, które są związane z niezweryfikowanymi zmianami właściwości.The following example calls InvalidateProperty on a custom property, whenever properties that are involved in the invalidated property's calculations change. Jest to alternatywna technika wywołująca metodę CoerceValue, ponieważ unieważnienie właściwości spowoduje również wywołanie wszelkich zarejestrowanych CoerceValueCallback.This is an alternative technique to calling the CoerceValue method, because invalidating the property will also call any registered 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

Uwagi

Gdy wywołasz InvalidateProperty, wszystkie skojarzone i odpowiednie funkcje CoerceValueCallback lub PropertyChangedCallback zarejestrowane dla danej właściwości zależności mogą być wywoływane.When you call InvalidateProperty, any associated and applicable CoerceValueCallback or PropertyChangedCallback functions registered for that dependency property might be invoked.

Wywołanie InvalidateProperty na właściwości, która ma swój lokalny zestaw wartości nie będzie miało efektu, ponieważ wartość lokalna ma pierwszeństwo przed innymi danymi wejściowymi systemu właściwości, z wyjątkiem animacji.Calling InvalidateProperty on a property that has its local value set will have no effect, because the local value takes precedence over other property system inputs, except for animations. Można jednak wywołać ClearValue, a następnie wywołać InvalidateProperty.However, you could call ClearValue, then call InvalidateProperty. Aby uzyskać więcej informacji, zobacz pierwszeństwo wartości właściwości zależności.For more information, see Dependency Property Value Precedence.

Wywołanie InvalidateProperty nie musi być stosowane dla wielu scenariuszy właściwości zależności.Calling InvalidateProperty is not necessarily applicable for many dependency property scenarios. Jeśli właściwość zależności zostanie unieważniona ze względu na zmiany wartości w którymkolwiek z elementów, system właściwości unieważnia i ponownie oblicza właściwość zależności automatycznie.If a dependency property becomes invalidated because of value changes in any of the constituents, the property system invalidates and re-evaluates the dependency property automatically. Jednak nadal istnieją pewne odpowiednie scenariusze, w których InvalidateProperty jest użyteczna.However, there are still some appropriate scenarios where InvalidateProperty is useful. W szczególności można użyć wartości InvalidateProperty wewnątrz wywołania zwrotnego wartość lub właściwość przekształcenia dla innej właściwości zależności.In particular, you can use InvalidateProperty inside the coerce value or property changed callback for a different dependency property. Można również użyć InvalidateProperty, aby wymusić ponowną ocenę powiązania ze źródłem danych, które nie jest w stanie zaimplementować zalecanego mechanizmu powiadamiania INotifyPropertyChanged (prawdopodobnie w przypadku używania klas danych, które nie mogą pochodzić z lub gdzie dane są statyczną składową).You can also use InvalidateProperty to force re-evaluation of a binding against a data source that is not able to implement the recommended INotifyPropertyChanged notification mechanism (perhaps if consuming data classes that cannot be derived from, or where the data is a static member).

Dotyczy

Zobacz też