2010-03-12 2 views
0

Fondamentalement, je veux utiliser le cadre WPF Binding pour "observer" une propriété dans le contexte de données, et quand cette valeur change pour appeler un gestionnaire d'événements. Je ne veux vraiment pas le lier à une cible.Possible d'utiliser des liaisons uniquement pour l'événement SourceChanged?

Sons simples mais d'après ce que je peux voir La liaison est trop couplée (à l'arbre visuel et à divers autres bits) pour pouvoir l'utiliser avec souplesse.

Des pensées?

Répondre

1

Vous avez raison: les liaisons sont associées à l'arborescence visuelle: elles concernent l'accrochage des éléments de l'interface utilisateur aux éléments de données. Donc, si vous voulez utiliser une liaison pour cela, vous devez en effet le définir sur un élément de cadre factice.

Toutefois, si WPF peut observer la propriété, vous pouvez également le faire. WPF utilise simplement l'interface INotifyPropertyChanged de l'objet de contexte de données. Ainsi, plutôt que de configurer une liaison, vous pouvez simplement convertir l'objet que vous souhaitez observer en INotifyPropertyChanged et vous abonner à son événement PropertyChanged. En interne, c'est tout ce que WPF fait de toute façon.

(Si vous êtes préoccupé par les problèmes du cycle de vie, WPF fournit la PropertyChangedEventManager qui utilise des références faibles. Appel PropertyChangedEventManager(dataObject, listenerObject, "WhateverPropertyYouWant") où listenerObject est l'objet que vous souhaitez recevoir les notifications de modification.)

+0

Le problème est la chose d'observation im est Un chemin complexe ... Je ne veux pas implémenter toute cette logique moi-même. – Schneider

Questions connexes