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时,可能会调用为该依赖项属性注册的任何关联函数和PropertyChangedCallback适用CoerceValueCallback函数。

调用 InvalidateProperty 具有其本地值集的属性将不起作用,因为本地值优先于其他属性系统输入,但动画除外。 但是,你可以调用 ClearValue,然后调用 InvalidateProperty。 有关详细信息,请参阅依赖属性值优先级

调用 InvalidateProperty 不一定适用于许多依赖属性方案。 如果依赖属性因任何构成项中的值更改而失效,则属性系统会自动使依赖项属性失效并重新评估。 但是,仍有一些合适的方案 InvalidateProperty 非常有用。 具体而言,可以在 InvalidateProperty 强制值或属性更改回调中使用其他依赖项属性。 还可以用于 InvalidateProperty 强制重新评估对无法实现建议 INotifyPropertyChanged 通知机制的数据源的绑定 (使用无法派生的数据类,或者数据是静态成员) 。

适用于

另请参阅