DependencyObject.InvalidateProperty(DependencyProperty) Метод

Определение

Повторно вычисляет эффективное значение для указанного свойства зависимостей.

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)

Параметры

dp
DependencyProperty

Идентификатор DependencyProperty свойства, который требуется сделать недействительным.

Примеры

В следующем примере вызывается InvalidateProperty настраиваемое свойство, когда изменяются свойства, участвующие в вычислениях недопустимого свойства. Это альтернативный метод CoerceValue вызова метода, так как недопустимое свойство также вызовет любой зарегистрированный 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

Комментарии

При вызове InvalidatePropertyмогут вызываться все связанные и применимые функции или CoerceValueCallback функции, зарегистрированные PropertyChangedCallback для этого свойства зависимостей.

Вызов InvalidateProperty свойства, имеющего локальный набор значений, не будет иметь эффекта, так как локальное значение имеет приоритет над другими входными данными системы свойств, за исключением анимаций. Тем не менее, можно вызвать ClearValue, а затем вызвать InvalidateProperty. Дополнительные сведения см. в разделе "Приоритет свойства зависимостей".

Вызов InvalidateProperty не обязательно применяется для многих сценариев свойств зависимостей. Если свойство зависимости становится недействительным из-за изменений значений в любом из компонентов, система свойств отменяет и повторно оценивает свойство зависимостей автоматически. Однако существуют некоторые подходящие сценарии, где InvalidateProperty это полезно. В частности, можно использовать InvalidateProperty внутри значения принудительного или измененного свойства обратный вызов для другого свойства зависимостей. Можно также использовать InvalidateProperty для принудительной повторной оценки привязки к источнику данных, который не может реализовать рекомендуемый INotifyPropertyChanged механизм уведомления (возможно, если использование классов данных, которые не могут быть производными, или где данные являются статическим элементом).

Применяется к

См. также раздел