DependencyPropertyChangedEventArgs Struct
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce dati per vari eventi di modifica delle proprietà. In genere questi eventi segnalano modifiche di valore effettivo nel valore di una proprietà di dipendenza di sola lettura. Un altro utilizzo è parte di un'implementazione di PropertyChangedCallback.
public value class DependencyPropertyChangedEventArgs
public struct DependencyPropertyChangedEventArgs
type DependencyPropertyChangedEventArgs = struct
Public Structure DependencyPropertyChangedEventArgs
- Ereditarietà
Esempio
Nell'esempio seguente viene utilizzata la DependencyPropertyChangedEventArgs classe nel contesto di un PropertyChangedCallback oggetto per una determinata proprietà di una classe personalizzata che definisce anche gli eventi. Il callback accetta i risultati dei valori precedenti e nuovi dal sistema di proprietà come comunicato da DependencyPropertyChangedEventArgse li raggruppa nuovamente in una classe RoutedPropertyChangedEventArgs<T>di argomenti di eventi diversa. I nuovi argomenti vengono quindi usati come dati per un evento "ValueChanged" definito da e generato dalla classe personalizzata.
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
Commenti
Gli eventi che usano la DependencyPropertyChangedEventArgs classe per i dati dell'evento e le implementazioni del DependencyPropertyChangedEventHandler metodo per i gestori, in genere seguono il modello Is*Changeddi denominazione e vengono in genere implementati come eventi CLR (Common Language Runtime) senza RoutedEvent eseguire il backup (non sono eventi indirizzati). Alcuni metodi di gestione delle classi che "gestiscono" eventi altrimenti non esposti che segnalano una modifica dello stato tramite una modifica di proprietà, ad esempio ButtonBase.OnIsPressedChanged, usano anche la DependencyPropertyChangedEventArgs classe per i dati dell'evento.
Lo scenario per PropertyChangedCallback consiste nell'usare gli argomenti per segnalare i valori precedenti e nuovi provenienti dalla valutazione del sistema di proprietà della proprietà. Un callback che elabora valori vecchi e nuovi potrebbe scegliere una gestione speciale a seconda di questi valori, ad esempio la scelta di non rispondere alle modifiche di valore ritenute insignificanti.
Costruttori
| Nome | Descrizione |
|---|---|
| DependencyPropertyChangedEventArgs(DependencyProperty, Object, Object) |
Inizializza una nuova istanza della classe DependencyPropertyChangedEventArgs. |
Proprietà
| Nome | Descrizione |
|---|---|
| NewValue |
Ottiene il valore della proprietà dopo la modifica. |
| OldValue |
Ottiene il valore della proprietà prima della modifica. |
| Property |
Ottiene l'identificatore per la proprietà di dipendenza in cui si è verificata la modifica del valore. |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(DependencyPropertyChangedEventArgs) |
Determina se l'oggetto specificato DependencyPropertyChangedEventArgs è equivalente all'oggetto corrente DependencyPropertyChangedEventArgs. |
| Equals(Object) |
Determina se l'oggetto specificato è equivalente all'oggetto corrente DependencyPropertyChangedEventArgs. |
| GetHashCode() |
Ottiene un codice hash per l'oggetto DependencyPropertyChangedEventArgs. |
Operatori
| Nome | Descrizione |
|---|---|
| Equality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs) |
Determina se due oggetti specificati DependencyPropertyChangedEventArgs hanno lo stesso valore. |
| Inequality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs) |
Determina se due oggetti specificati DependencyPropertyChangedEventArgs sono diversi. |