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 時,可能會叫用針對該相依性屬性註冊的任何相關聯和適用 CoerceValueCallbackPropertyChangedCallback 函式。

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

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

適用於

另請參閱