DependencyPropertyChangedEventArgs 類別

定義

提供在相依性屬性變更其值時所叫用 之 PropertyChangedCallback 實作的資料。 也提供 Control.IsEnabledChanged 事件的事件資料,以及使用 DependencyPropertyChangedEventHandler 委派的任何其他事件。

public ref class DependencyPropertyChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
繼承
Object Platform::Object IInspectable DependencyPropertyChangedEventArgs
屬性

範例

此範例示範使用事件資料的 PropertyChangedCallback 實作 DependencyPropertyChangedEventArgs 。 特別是,它會使用NewValue來設定相關屬性,這會在複合控制項的TextBlock部分,將基礎數值DependencyProperty值顯示為文字。

private static void ValueChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
    NumericUpDown ctl = (NumericUpDown)obj;
    Int32 newValue = (Int32)args.NewValue;

    // Update the TextElement to the new value.
    if (ctl.TextElement != null)
    {
        ctl.TextElement.Text = newValue.ToString();
    }

備註

DependencyPropertyChangedEventArgs 針對涉及相依性屬性值變更的兩種不同情況提供資料:

  • PropertyChangedCallback用於自訂相依性屬性的情況回呼資訊。 這是較常見的案例。
  • DependencyPropertyChangedEventHandler為基礎的事件資料。 這較不常見,因為使用此委派的唯一Windows 執行階段事件是Control.IsEnabledChanged事件。 如需有關如何在此案例中使用 DependencyPropertyChangedEventArgs 事件資料的詳細資訊,請參閱 DependencyPropertyChangedEventHandlerControl.IsEnabledChanged

PropertyChangedCallback實作是您在註冊相依性屬性時提供之屬性中繼資料的選擇性部分。 回呼是由相依性屬性系統內部叫用。 如需一般相依性屬性的詳細資訊,請參閱 自訂相依性屬性相依性屬性概觀

您通常會使用私人或內部存取來定義 方法。 方法必須為靜態。 因為方法是靜態的,所以PropertyChangedCallback委派的DependencyObject參數 (d) 很重要。 這就是識別屬性變更的特定相依性物件實例。 對於許多作業,例如更正或強制轉換值,或在相同物件上變更另一個計算屬性值,您將參考這個 DependencyObject 。 您通常會想要將它轉換成變更之屬性的擁有者類型。 擁有者類型是 DependencyProperty.Register 呼叫中依名稱參考的類型;指派給屬性中繼資料的 PropertyChangedCallback 中繼資料是該相同呼叫的一部分。

請注意遞迴的可能性。 如果您變更 叫用 PropertyChangedCallback 的相依性屬性值,則會再次叫用它。 例如,如果您為回呼一律將值除以 2 的屬性建立 Double 回呼,該回呼會以遞迴方式呼叫,而您的應用程式會處於無限迴圈中。

若要讓兩個或多個不同的相依性屬性定義回呼以彼此變更,但再次小心不要建立不讓值穩定的意外迴圈相依性。

只有在事件資料中的OldValueNewValue不同時,才會叫用PropertyChangedCallback

OldValueNewValue 不具類型,因此您執行的任何比較都可能需要轉換。 許多相依性屬性值都使用實數值型別,這表示您將依賴實數值型別的運算子或其他 API 來進行比較。 該功能通常可在表示值的結構上取得,以公用程式 API 表示。 例如, Thickness 值上的語言特定公用程式 API 可讓您比較 Thickness 值。

注意

如果您是使用 C++ 進行程式設計,其中一些Windows 執行階段結構不支援非資料成員,因此不支援運算子或其他公用程式。 針對這些類別,有一個隨附 Helper 類別提供 C++ 程式碼可以使用的比較 API。 例如,使用 ColorHelper 類別來比較 Color 值。

針對自訂事件使用DependencyPropertyChangedEventArgs

如果因為相依性屬性值變更而引發自訂事件,自訂控制項實作器可能會考慮使用 DependencyPropertyChangedEventHandler 做為委派類型。 您只能從 PropertyChangedCallback的內容中引發這類事件。 這是因為變更 (屬性的值,所以) 的舊值和新值應該位於 DependencyPropertyChangedEventArgs 屬性系統層級的事件所報告的 中。 但沒有任何建構 DependencyPropertyChangedEventArgs 函式可供設定,因此取得值的唯一 DependencyPropertyChangedEventArgs 方法是從原始 PropertyChangedCallback 參數取得值,並在引發自訂事件時通過傳遞。

屬性

NewValue

取得報告變更之後的相依性屬性值。

OldValue

取得報告變更之前相依性屬性的值。

Property

取得發生值變更之相依性屬性的識別項。

適用於

另請參閱