DependencyObject.InvalidateProperty(DependencyProperty) 方法

定義

重新評估指定相依性屬性的有效值。

C#
public void InvalidateProperty(System.Windows.DependencyProperty dp);

參數

dp
DependencyProperty

要使其失效之屬性的 DependencyProperty 識別項。

範例

每當涉及無效屬性計算的屬性變更時,下列範例會呼叫 InvalidateProperty 自訂屬性。 這是呼叫 CoerceValue 方法的替代技術,因為使 屬性失效也會呼叫任何已註冊 CoerceValueCallback 的 。

C#
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);
}

備註

當您呼叫 InvalidateProperty 時,可能會叫用針對該相依性屬性註冊的任何相關聯和適用 CoerceValueCallbackPropertyChangedCallback 函式。

呼叫 InvalidateProperty 具有其本機值集的屬性不會有任何作用,因為本機值優先于其他屬性系統輸入,但動畫除外。 不過,您可以呼叫 ClearValue ,然後呼叫 InvalidateProperty 。 如需詳細資訊,請參閱相依性屬性值優先順序

呼叫 InvalidateProperty 不一定適用于許多相依性屬性案例。 如果相依性屬性因為任何組成專案的值變更而失效,則屬性系統會自動失效並重新評估相依性屬性。 不過,仍有一些適當的案例 InvalidateProperty 很有用。 特別是,您可以在強制值或屬性變更回呼內使用不同的 InvalidateProperty 相依性屬性。 您也可以使用 InvalidateProperty 來強制對無法實作建議 INotifyPropertyChanged 通知機制的資料來源重新評估系結 (可能是取用無法衍生自的資料類別,或資料是靜態成員) 的位置。

適用於

產品 版本
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另請參閱