DependencyPropertyChangedEventArgs Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt Daten für eine PropertyChangedCallback-Implementierung bereit, die aufgerufen wird, wenn eine Abhängigkeitseigenschaft ihren Wert ändert. Stellt außerdem Ereignisdaten für das Control.IsEnabledChanged-Ereignis und jedes andere Ereignis bereit, das den DependencyPropertyChangedEventHandler-Delegaten verwendet.
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
- Vererbung
- Attribute
Beispiele
Dieses Beispiel zeigt eine PropertyChangedCallback-Implementierung , die die DependencyPropertyChangedEventArgs
Ereignisdaten verwendet. Insbesondere wird NewValue verwendet, um eine verwandte Eigenschaft festzulegen, die den zugrunde liegenden numerischen DependencyProperty-Wert als Text in einem TextBlock-Teil eines zusammengesetzten Steuerelements anzeigt.
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();
}
Hinweise
DependencyPropertyChangedEventArgs
stellt Daten für zwei verschiedene Situationen bereit, die Änderungen an Abhängigkeitseigenschaftswerten beinhalten:
- Situationsbasierte Rückrufinformationen, wie sie von einem PropertyChangedCallback für eine benutzerdefinierte Abhängigkeitseigenschaft verwendet werden. Dies ist der häufigere Fall.
- Ereignisdaten für ein Ereignis basierend auf DependencyPropertyChangedEventHandler. Dies ist weniger häufig, da das einzige Windows-Runtime Ereignis, das diesen Delegaten verwendet, das Control.IsEnabledChanged-Ereignis ist. Weitere Informationen zur Verwendung der
DependencyPropertyChangedEventArgs
Ereignisdaten in diesem Fall finden Sie unterDependencyPropertyChangedEventHandler
oderControl.IsEnabledChanged
.
Eine PropertyChangedCallback-Implementierung ist ein optionaler Bestandteil der Eigenschaftenmetadaten, die Sie beim Registrieren einer Abhängigkeitseigenschaft angeben. Der Rückruf wird intern vom Abhängigkeitseigenschaftensystem aufgerufen. Weitere Informationen zu Abhängigkeitseigenschaften im Allgemeinen finden Sie unter Übersicht über benutzerdefinierte Abhängigkeitseigenschaften und Abhängigkeitseigenschaften.
In der Regel definieren Sie die Methode mit privatem oder internem Zugriff. Die Methode muss statisch sein. Da die Methode statisch ist, ist der DependencyObject-Parameter (d) des PropertyChangedCallback-Delegaten wichtig. Dadurch wird das spezifische Abhängigkeitsobjekt instance identifiziert, an dem sich die Eigenschaft ändert. Für viele Vorgänge, z. B. das Korrigieren oder Zwangsverursachen eines Werts oder das Ändern eines anderen berechneten Eigenschaftswerts als Antwort auf dasselbe Objekt, verweisen Sie auf diese DependencyObject
. In der Regel sollten Sie ihn in den Besitzertyp der eigenschaft umwandeln, die sich ändert. Der Besitzertyp ist der Typ, auf den im Aufruf DependencyProperty.Register durch den Namen verwiesen wird. Die Metadaten, denen Ihre PropertyChangedCallback
Eigenschaftsmetadaten zugewiesen sind, sind Teil desselben Aufrufs.
Seien Sie sich der Möglichkeit der Rekursion bewusst. Wenn Sie den Wert einer Abhängigkeitseigenschaft ändern, für die PropertyChangedCallback aufgerufen wird, wird sie erneut aufgerufen. Wenn Sie beispielsweise einen Rückruf für eine Double
Eigenschaft erstellt haben, bei der der Rückruf den Wert immer durch 2 geteilt hat, wird dieser Rückruf rekursiv aufgerufen, und Ihre App befindet sich in einer Endlosschleife.
Es ist zulässig, dass zwei oder mehr unterschiedliche Abhängigkeitseigenschaften Rückrufe definieren, um sich gegenseitig zu ändern, aber achten Sie erneut darauf, keine unbeabsichtigte zirkuläre Abhängigkeit zu erstellen, die keine Stabilisierung der Werte ermöglicht.
Ein PropertyChangedCallback wird nur aufgerufen, wenn OldValue und NewValue in den Ereignisdaten unterschiedlich sind.
OldValue und NewValue werden nicht typisiert, sodass jeder Vergleich, den Sie durchführen, wahrscheinlich eine Umwandlung erfordert. Viele Abhängigkeitseigenschaftswerte verwenden einen Werttyp. Dies bedeutet, dass Sie sich für die Vergleiche auf die Operatoren oder eine andere API des Werttyps verlassen. Diese Funktionalität ist in der Regel für die Struktur verfügbar, die einen Wert darstellt, als Hilfsprogramm-API. Mit der sprachspezifischen Hilfsprogramm-API für einen Dickenwert können Sie beispielsweise Werte vergleichen Thickness
.
Hinweis
Wenn Sie mit C++ programmieren, unterstützen einige der Windows-Runtime-Strukturen keine Nichtdatenmember. Daher werden keine Operatoren oder ein anderes Hilfsprogramm unterstützt. Für diese gibt es eine Begleitklasse Helper
, die eine Vergleichs-API bereitstellt, die C++-Code verwenden kann. Verwenden Sie beispielsweise die ColorHelper-Klasse , um Color-Werte zu vergleichen.
Verwenden von DependencyPropertyChangedEventArgs für ein benutzerdefiniertes Ereignis
Ein benutzerdefinierter Steuerelementimplementierer kann die Verwendung von DependencyPropertyChangedEventHandler als Delegattyp in Betracht ziehen, wenn ein benutzerdefiniertes Ereignis aufgrund einer Änderung des Abhängigkeitseigenschaftswerts ausgelöst wird. Sie können ein solches Ereignis nur innerhalb des Kontexts eines PropertyChangedCallback auslösen. Dies liegt daran, dass sich der geänderte Wert (die Eigenschaft, der alte und der neue Wert) in der befinden sollte, die DependencyPropertyChangedEventArgs
für das Ereignis auf Eigenschaftssystemebene gemeldet werden. Es gibt jedoch keine Konstruktoren für DependencyPropertyChangedEventArgs
, und keine der zugehörigen Eigenschaften ist festgelegt. Die einzige Möglichkeit, einen DependencyPropertyChangedEventArgs
Wert abzurufen, besteht darin, ihn aus den ursprünglichen PropertyChangedCallback
Parametern abzurufen und ihn zu übergeben, wenn Sie Ihr benutzerdefiniertes Ereignis auslösen.
Eigenschaften
NewValue |
Ruft den Wert der Abhängigkeitseigenschaft nach der gemeldeten Änderung ab. |
OldValue |
Ruft den Wert der Abhängigkeitseigenschaft vor der gemeldeten Änderung ab. |
Property |
Ruft den Bezeichner für die Abhängigkeitseigenschaft ab, für die die Änderung des Werts aufgetreten ist. |