Поделиться через


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 механизм уведомления (возможно, при использовании классов данных, которые не могут быть производными, или если данные являются статическим элементом).

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

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