DependencyPropertyChangedEventArgs 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供在相依性屬性變更其值時所叫用 之 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
- 繼承
- 屬性
範例
此範例示範使用事件資料的 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
事件資料的詳細資訊,請參閱DependencyPropertyChangedEventHandler
或Control.IsEnabledChanged
。
PropertyChangedCallback實作是您在註冊相依性屬性時提供之屬性中繼資料的選擇性部分。 回呼是由相依性屬性系統內部叫用。 如需一般相依性屬性的詳細資訊,請參閱 自訂相依性屬性 和 相依性屬性概觀。
您通常會使用私人或內部存取來定義 方法。 方法必須為靜態。 因為方法是靜態的,所以PropertyChangedCallback委派的DependencyObject參數 (d) 很重要。 這就是識別屬性變更的特定相依性物件實例。 對於許多作業,例如更正或強制轉換值,或在相同物件上變更另一個計算屬性值,您將參考這個 DependencyObject
。 您通常會想要將它轉換成變更之屬性的擁有者類型。 擁有者類型是 DependencyProperty.Register 呼叫中依名稱參考的類型;指派給屬性中繼資料的 PropertyChangedCallback
中繼資料是該相同呼叫的一部分。
請注意遞迴的可能性。 如果您變更 叫用 PropertyChangedCallback 的相依性屬性值,則會再次叫用它。 例如,如果您為回呼一律將值除以 2 的屬性建立 Double
回呼,該回呼會以遞迴方式呼叫,而您的應用程式會處於無限迴圈中。
若要讓兩個或多個不同的相依性屬性定義回呼以彼此變更,但再次小心不要建立不讓值穩定的意外迴圈相依性。
只有在事件資料中的OldValue和NewValue不同時,才會叫用PropertyChangedCallback。
OldValue 和 NewValue 不具類型,因此您執行的任何比較都可能需要轉換。 許多相依性屬性值都使用實數值型別,這表示您將依賴實數值型別的運算子或其他 API 來進行比較。 該功能通常可在表示值的結構上取得,以公用程式 API 表示。 例如, Thickness 值上的語言特定公用程式 API 可讓您比較 Thickness
值。
注意
如果您是使用 C++ 進行程式設計,其中一些Windows 執行階段結構不支援非資料成員,因此不支援運算子或其他公用程式。 針對這些類別,有一個隨附 Helper
類別提供 C++ 程式碼可以使用的比較 API。 例如,使用 ColorHelper 類別來比較 Color 值。
針對自訂事件使用DependencyPropertyChangedEventArgs
如果因為相依性屬性值變更而引發自訂事件,自訂控制項實作器可能會考慮使用 DependencyPropertyChangedEventHandler 做為委派類型。 您只能從 PropertyChangedCallback的內容中引發這類事件。 這是因為變更 (屬性的值,所以) 的舊值和新值應該位於 DependencyPropertyChangedEventArgs
屬性系統層級的事件所報告的 中。 但沒有任何建構 DependencyPropertyChangedEventArgs
函式可供設定,因此取得值的唯一 DependencyPropertyChangedEventArgs
方法是從原始 PropertyChangedCallback
參數取得值,並在引發自訂事件時通過傳遞。
屬性
NewValue |
取得報告變更之後的相依性屬性值。 |
OldValue |
取得報告變更之前相依性屬性的值。 |
Property |
取得發生值變更之相依性屬性的識別項。 |