DependencyPropertyChangedEventArgs 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供各種屬性變更事件的資料。 這些事件通常會報告唯讀相依性屬性值中的有效值變更。 此外,也可以當做 PropertyChangedCallback 實作的一部分來使用。
public value class DependencyPropertyChangedEventArgs
public struct DependencyPropertyChangedEventArgs
type DependencyPropertyChangedEventArgs = struct
Public Structure DependencyPropertyChangedEventArgs
- 繼承
範例
下列範例會 DependencyPropertyChangedEventArgs 針對也會定義事件之自訂類別的特定屬性,在 的內容 PropertyChangedCallback 中使用 類別。 回呼會根據 的 DependencyPropertyChangedEventArgs 通訊,從 屬性系統取得舊值和新值的結果,並將這些值重新封裝成不同的事件引數類別 RoutedPropertyChangedEventArgs<T> 。 然後,新的引數會當做由 自訂類別所定義的 「ValueChanged」 事件資料使用。
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register(
"Value", typeof(decimal), typeof(NumericUpDown),
new FrameworkPropertyMetadata(MinValue, new PropertyChangedCallback(OnValueChanged),
new CoerceValueCallback(CoerceValue)));
private static object CoerceValue(DependencyObject element, object value)
{
decimal newValue = (decimal)value;
newValue = Math.Max(MinValue, Math.Min(MaxValue, newValue));
return newValue;
}
private static void OnValueChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
NumericUpDown control = (NumericUpDown)obj;
RoutedPropertyChangedEventArgs<decimal> e = new RoutedPropertyChangedEventArgs<decimal>(
(decimal)args.OldValue, (decimal)args.NewValue, ValueChangedEvent);
control.OnValueChanged(e);
}
/// <summary>
/// Identifies the ValueChanged routed event.
/// </summary>
public static readonly RoutedEvent ValueChangedEvent = EventManager.RegisterRoutedEvent(
"ValueChanged", RoutingStrategy.Bubble,
typeof(RoutedPropertyChangedEventHandler<decimal>), typeof(NumericUpDown));
/// <summary>
/// Occurs when the Value property changes.
/// </summary>
public event RoutedPropertyChangedEventHandler<decimal> ValueChanged
{
add { AddHandler(ValueChangedEvent, value); }
remove { RemoveHandler(ValueChangedEvent, value); }
}
/// <summary>
/// Raises the ValueChanged event.
/// </summary>
/// <param name="args">Arguments associated with the ValueChanged event.</param>
protected virtual void OnValueChanged(RoutedPropertyChangedEventArgs<decimal> args)
{
RaiseEvent(args);
}
Public Shared ReadOnly ValueProperty As DependencyProperty = DependencyProperty.Register("Value", GetType(Decimal), GetType(NumericUpDown), New FrameworkPropertyMetadata(MinValue, New PropertyChangedCallback(AddressOf OnValueChanged), New CoerceValueCallback(AddressOf CoerceValue)))
Private Shared Overloads Function CoerceValue(ByVal element As DependencyObject, ByVal value As Object) As Object
Dim newValue As Decimal = CDec(value)
newValue = Math.Max(MinValue, Math.Min(MaxValue, newValue))
Return newValue
End Function
Private Shared Sub OnValueChanged(ByVal obj As DependencyObject, ByVal args As DependencyPropertyChangedEventArgs)
Dim control As NumericUpDown = CType(obj, NumericUpDown)
Dim e As New RoutedPropertyChangedEventArgs(Of Decimal)(CDec(args.OldValue), CDec(args.NewValue), ValueChangedEvent)
control.OnValueChanged(e)
End Sub
''' <summary>
''' Identifies the ValueChanged routed event.
''' </summary>
Public Shared ReadOnly ValueChangedEvent As RoutedEvent = EventManager.RegisterRoutedEvent("ValueChanged", RoutingStrategy.Bubble, GetType(RoutedPropertyChangedEventHandler(Of Decimal)), GetType(NumericUpDown))
''' <summary>
''' Occurs when the Value property changes.
''' </summary>
Public Custom Event ValueChanged As RoutedPropertyChangedEventHandler(Of Decimal)
AddHandler(ByVal value As RoutedPropertyChangedEventHandler(Of Decimal))
MyBase.AddHandler(ValueChangedEvent, value)
End AddHandler
RemoveHandler(ByVal value As RoutedPropertyChangedEventHandler(Of Decimal))
MyBase.RemoveHandler(ValueChangedEvent, value)
End RemoveHandler
RaiseEvent(ByVal sender As System.Object, ByVal e As RoutedPropertyChangedEventArgs(Of Decimal))
End RaiseEvent
End Event
''' <summary>
''' Raises the ValueChanged event.
''' </summary>
''' <param name="args">Arguments associated with the ValueChanged event.</param>
Protected Overridable Sub OnValueChanged(ByVal args As RoutedPropertyChangedEventArgs(Of Decimal))
MyBase.RaiseEvent(args)
End Sub
備註
針對事件資料使用 DependencyPropertyChangedEventArgs 類別的事件,以及 DependencyPropertyChangedEventHandler 處理常式的方法實作通常會遵循命名模式 Is*Changed
,而且通常會實作為 Common Language Runtime (CLR) 事件,而不 RoutedEvent 需 (它們不是路由事件) 。 某些類別處理方法,這些方法「處理」否則為未公開的事件,這些事件會透過屬性變更報告狀態變更,例如 ButtonBase.OnIsPressedChanged ,也會針對事件資料使用 DependencyPropertyChangedEventArgs 類別。
的案例 PropertyChangedCallback 是使用 引數來報告來自 屬性之屬性系統評估的舊值和新值。 處理舊值和新值的回呼可能會根據這些值選擇特殊處理,例如選擇不回應視為不重要的值變更。
建構函式
DependencyPropertyChangedEventArgs(DependencyProperty, Object, Object) |
初始化 DependencyPropertyChangedEventArgs 類別的新執行個體。 |
屬性
NewValue |
取得變更後的屬性值。 |
OldValue |
取得變更前的屬性值。 |
Property |
取得發生值變更之相依性屬性的識別項。 |
方法
Equals(DependencyPropertyChangedEventArgs) |
判斷提供的 DependencyPropertyChangedEventArgs 和目前的 DependencyPropertyChangedEventArgs 是否相等。 |
Equals(Object) |
判斷提供的物件和目前的 DependencyPropertyChangedEventArgs 是否相等。 |
GetHashCode() |
取得這個 DependencyPropertyChangedEventArgs 的雜湊碼。 |