11
votes

Obtenir 'Ceci' pointeur à l'intérieur de la propriété de dépendance a changé de rappel

J'ai la propriété de dépendance suivante à l'intérieur d'une classe: xxx

Je dois être capable de récupérer une référence à l'instance de classe dans laquelle appartient la propriété modifiée.

Ceci est depuis fooholder a des gestionnaires d'événements qui doivent être accrochés / décroché lorsque la valeur de la propriété est modifiée. La propriété a changé de rappel doit être statique, mais le gestionnaire d'événements n'est pas.


0 commentaires

3 Réponses :


17
votes

Quelque chose comme ça: (vous devrez définir une touffefoo () et Wirefoo () vous-même) xxx

et, bien sûr, FOOholder doit hériter de dépendanceObject


2 commentaires

Et ici, je regardais autour des propriétés à l'intérieur D, peut-être que c'était trop évident. Merci!


1000 Merci pour celui-ci ... Je suis juste allé à un voyage de 16 heures pour trouver la documentation évidente. MSDN Documentation semble être écrit par Sir Humphrey Appleby ..



3
votes

Le propriétaire de la propriété étant modifié est le paramètre d de votre méthode de rappel


0 commentaires

3
votes

Basé sur la réponse de @ Catalin-Dicu, j'ai ajouté cette méthode d'assistance à ma bibliothèque. Il se sentait un peu plus naturel d'avoir la méthode onchanged non statique et de cacher tout le casting. XXX PRE>

EXEMPLE D'UTILISATION: P>

class FooHolder
{
    public static DependencyProperty CurrentFooProperty = WpfUtils.RegisterDependencyPropertyWithCallback
        <FooHolder, Foo>("CurrentFoo", x => x.OnCurrentFooChanged);

    private void OnCurrentFooChanged(Foo oldFoo, Foo newFoo)
    {
        // do stuff with holder
    }
}


0 commentaires