DependencyObject.InvalidateProperty(DependencyProperty) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
重新評估指定相依性屬性的有效值。
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)
參數
要使其失效之屬性的 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 通知機制的資料來源重新評估系結 (可能是取用無法衍生自的資料類別,或資料是靜態成員) 的位置。