DependencyPropertyChangedEventArgs 類別

定義

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

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

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)

範例

此範例示範使用 DependencyPropertyChangedEventArgs 事件資料的 PropertyChangedCallback 實作。 特別是,它會使用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();
    }

Private Shared Sub ValueChangedCallback(ByVal obj As DependencyObject, _
                    ByVal args As DependencyPropertyChangedEventArgs)

    Dim ctl As NumericUpDown = DirectCast(obj, NumericUpDown)
    Dim newValue As Integer = args.NewValue

    ' Update the TextElement to the new value. 
    If ctl.TextElement IsNot Nothing Then
        ctl.TextElement.Text = newValue.ToString()
    End If

備註

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

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

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

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

有兩個或多個不同的相依性屬性可定義彼此變更的回呼,但再次小心不要建立不小心建立不讓值穩定之非預期的迴圈相依性。

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

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

注意

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

針對自訂事件使用DependencyPropertyChangedEventArgs

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

屬性

NewValue

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

OldValue

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

Property

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

適用於

另請參閱