DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) Method

Определение

Повторно вычисляет действующее значение для указанного свойства зависимостей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)

Параметры

dp
DependencyProperty DependencyProperty DependencyProperty DependencyProperty

Идентификатор DependencyProperty свойства, которое следует сделать недействительным.The DependencyProperty identifier of the property to invalidate.

Примеры

В следующем примере вызывается InvalidateProperty пользовательское свойство, когда изменяются свойства, участвующие в вычислениях недействительного свойства.The following example calls InvalidateProperty on a custom property, whenever properties that are involved in the invalidated property's calculations change. Это альтернативный метод вызова CoerceValue метода, так как при непроверке свойства также будут вызываться все зарегистрированные. CoerceValueCallbackThis 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

Комментарии

При вызове InvalidatePropertyмогут быть вызваны все CoerceValueCallback связанные PropertyChangedCallback и применимые функции или, зарегистрированные для этого свойства зависимостей.When you call InvalidateProperty, any associated and applicable CoerceValueCallback or PropertyChangedCallback functions registered for that dependency property might be invoked.

Вызов InvalidateProperty для свойства, для которого задано локальное значение, не будет действовать, так как локальное значение имеет приоритет над другими входными данными системы свойств, за исключением анимации.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. Однако можно вызвать ClearValueметод, а затем вызвать InvalidatePropertyметод.However, you could call ClearValue, then call InvalidateProperty. Дополнительные сведения см. в разделе Приоритет значений свойств зависимостей.For more information, see Dependency Property Value Precedence.

Вызов InvalidateProperty необязательно применим для многих сценариев свойств зависимостей.Calling InvalidateProperty is not necessarily applicable for many dependency property scenarios. Если свойство зависимости станет недействительным из-за изменений значений в любом из составляющих, система свойств сделает недействительным и повторно вычисляет свойство зависимостей автоматически.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. Однако по-прежнему есть несколько подходящих сценариев InvalidateProperty , где это полезно.However, there are still some appropriate scenarios where InvalidateProperty is useful. В частности, можно использовать InvalidateProperty внутри значения приведения или обратного вызова изменения свойства для другого свойства зависимостей.In particular, you can use InvalidateProperty inside the coerce value or property changed callback for a different dependency property. Также можно использовать InvalidateProperty для принудительной повторной оценки привязки к источнику данных, который не может реализовать рекомендуемый INotifyPropertyChanged механизм уведомления (возможно, при использовании классов данных, которые не могут быть производными, или если данные являются статическими элемент).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).

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

Дополнительно