2010-05-13 13 views
2

Donc je pense que je fais quelque chose de très basique. Je sais pourquoi cela ne fonctionne pas, mais il semble qu'il devrait y avoir un moyen direct de le faire fonctionner.WPF InotifyPropertyChanged et voir les modèles

code:

private string fooImageRoot; 
// .... 
public BitmapImage FooImage 
{ 
    get 
    { 
    URI imageURI = new URI(Path.Combine(fooImageRoot, CurrentFooTypes.FooObject.FooImageName)); 
    return imageURI; 
    } 
} 

Alors CurrentFOoTypes et FooObject soutient également INotifyPropertyChanged. Par conséquent, si je lier un TextBlock à CurrentFooTypes.FooObject.FooImageName, si fooObject ou FooImageName modifient les mises à jour du bloc de texte. Comment puis-je abonner mon objet viewmodel pour recevoir des mises à jour dans une fasion similaire. Corrigez-moi si je me trompe.

Répondre

1

Vous souhaitez être informé des modifications apportées aux propriétés FooImageName et FooObject, les deux objets propriétaires utilisent INotifyPropertyChanged pour avertir les observateurs que ces propriétés ont été modifiées. Josh Smith a eu un joli article où il a introduit un objet PropertyObserver, qui est utilisé pour ce scénario.

Le MVVM Foundation inclut cet objet ainsi que d'autres objets utiles pour le développement MVVM.

Vous pouvez utiliser le PropertyObserver ou un code personnalisé pour surveiller les modifications des propriétés qui vous intéressent (dans ce cas, FooObject et FooImageName) et effectuer les actions nécessaires pour mettre à jour l'URI d'image en fonction de ces modifications.

+0

Merci c'est exactement ce dont j'ai besoin. –