DependencyPropertyChangedEventArgs Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit des données pour une implémentation PropertyChangedCallback appelée lorsqu’une propriété de dépendance change sa valeur. Fournit également des données d’événement pour l’événement Control.IsEnabledChanged et tout autre événement qui utilise le délégué 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
- Héritage
- Attributs
Exemples
Cet exemple montre une implémentation PropertyChangedCallback qui utilise les données d’événement DependencyPropertyChangedEventArgs
. En particulier, il utilise NewValue pour définir une propriété associée, qui affiche la valeur sous-jacente DependencyProperty sous forme de texte, dans une partie TextBlock d’un contrôle composite.
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();
}
Remarques
DependencyPropertyChangedEventArgs
fournit des données pour deux situations différentes qui impliquent des modifications des valeurs de propriété de dépendance :
- Informations de rappel situationnelles utilisées par un PropertyChangedCallback pour une propriété de dépendance personnalisée. C’est le cas le plus courant.
- Données d’événement pour un événement basé sur DependencyPropertyChangedEventHandler. Cela est moins courant, car le seul événement Windows Runtime qui utilise ce délégué est l’événement Control.IsEnabledChanged. Pour plus d’informations sur l’utilisation des
DependencyPropertyChangedEventArgs
données d’événement dans ce cas, consultezDependencyPropertyChangedEventHandler
ouControl.IsEnabledChanged
.
Une implémentation PropertyChangedCallback est une partie facultative des métadonnées de propriété que vous fournissez lorsque vous inscrivez une propriété de dépendance. Le rappel est appelé par le système de propriétés de dépendance en interne. Pour plus d’informations sur les propriétés de dépendance en général, consultez Propriétés de dépendance personnalisées et Vue d’ensemble des propriétés de dépendance.
En règle générale, vous définissez la méthode avec un accès privé ou interne. La méthode doit être statique. Étant donné que la méthode est statique, le paramètre DependencyObject (d) du délégué PropertyChangedCallback est important. C’est ce qui identifie l’objet de dépendance spécifique instance où la propriété change. Pour de nombreuses opérations, telles que la correction ou la force d’une valeur, ou la modification d’une autre valeur de propriété calculée en réponse sur le même objet, vous allez référencer ce DependencyObject
. Vous souhaiterez généralement le convertir en type de propriétaire de la propriété qui change. Le type de propriétaire est le type référencé par nom dans l’appel DependencyProperty.Register ; les métadonnées où votre PropertyChangedCallback
est affecté aux métadonnées de propriété font partie de ce même appel.
Soyez conscient de la possibilité de récursivité. Si vous modifiez la valeur d’une propriété de dépendance pour laquelle propertyChangedCallback est appelé, elle est appelée à nouveau. Par exemple, si vous avez créé un rappel pour une Double
propriété où le rappel a toujours divisé la valeur par 2, ce rappel serait appelé de manière récursive et votre application serait dans une boucle infinie.
Il est légal d’avoir deux ou plusieurs propriétés de dépendance différentes qui définissent des rappels pour se modifier mutuellement, mais là encore, veillez à ne pas créer une dépendance circulaire involontaire qui ne permet pas aux valeurs de se stabiliser.
Un PropertyChangedCallback est appelé uniquement si OldValue et NewValue dans les données d’événement sont différents.
OldValue et NewValue ne sont pas typés. Par conséquent, toute comparaison que vous effectuez nécessite probablement un cast. De nombreuses valeurs de propriété de dépendance utilisent un type valeur, ce qui signifie que vous vous fierez aux opérateurs ou à d’autres API du type valeur pour effectuer les comparaisons. Cette fonctionnalité est généralement disponible sur la structure qui représente une valeur, en tant qu’API utilitaire. Par exemple, l’API utilitaire spécifique au langage sur une valeur d’épaisseur vous permet de comparer des Thickness
valeurs.
Notes
Si vous programmez à l’aide de C++, quelques-unes des structures Windows Runtime ne prennent pas en charge les membres non-données. Par conséquent, ne prennent pas en charge les opérateurs ou autres utilitaires. Pour ceux-ci, il existe une classe complémentaire Helper
qui fournit une API de comparaison que le code C++ peut utiliser. Par exemple, utilisez la classe ColorHelper pour comparer les valeurs color .
Utilisation de DependencyPropertyChangedEventArgs pour un événement personnalisé
Un implémenteur de contrôle personnalisé peut envisager d’utiliser DependencyPropertyChangedEventHandler comme type de délégué si un événement personnalisé est déclenché à la suite d’une modification de valeur de propriété de dépendance. Vous pouvez uniquement déclencher un tel événement à partir du contexte d’un PropertyChangedCallback. Cela est dû au fait que la valeur qui a changé (la propriété, l’ancienne et la nouvelle valeur) doit être dans le DependencyPropertyChangedEventArgs
qui sont signalés pour l’événement au niveau du système de propriété. Mais il n’y a pas de constructeur pour DependencyPropertyChangedEventArgs
et aucune de ses propriétés n’est paramétrable. La seule façon d’obtenir une DependencyPropertyChangedEventArgs
valeur est donc de l’obtenir à partir des paramètres d’origine PropertyChangedCallback
et de la transmettre lorsque vous déclenchez votre événement personnalisé.
Propriétés
NewValue |
Obtient la valeur de la propriété de dépendance après la modification signalée. |
OldValue |
Obtient la valeur de la propriété de dépendance avant la modification signalée. |
Property |
Obtient l'identificateur pour la propriété de dépendance où la valeur a été modifiée. |