2009-02-12 14 views
3

J'utilise le modèle MVVM et j'ai un POCO (dans mon modèle) avec une propriété Date de début.WPF Liaison à une propriété non modifiable

Je veux montrer le temps écoulé depuis la date de début d'un contrôle sur une fenêtre WPF/contrôle utilisateur ...

Je ne vois pas comment je peux lier une propriété MODELVIEW à un contrôle de l'interface utilisateur et ont il met à jour cette durée automatiquement ... quelqu'un peut-il suggérer un moyen? Je pourrais utiliser quelque chose (une minuterie ou un thread) pour mettre à jour une propriété de durée sur mon ModelView mais je ne vois pas autrement parce que si je comprends bien l'interface ne mettra à jour que quand une valeur de propriété change. Cependant la date de début sur mon POCO ne change pas c'est juste le temps écoulé qui change qui est une valeur calculée.

Ai-je raté quelque chose?

Répondre

3

Vous êtes sur la bonne voie. Jetez un oeil au patron Presentation Model sur la page de Martin Fowler.

L'idée de base est de créer un modèle pour l'interface utilisateur (ViewModel) et de faire en sorte que l'interface utilisateur se synchronise avec elle. Chaque bit d'information à afficher dans l'interface utilisateur doit avoir un champ ou une propriété correspondante dans ViewModel (bien qu'ils puissent être récupérés ou dérivés des valeurs du modèle). Le ViewModel facilite le stockage de l'état d'affichage/de session (comme la sélection actuelle d'éléments dans une UserList) qui n'est pas présente dans la classe Model derrière.

Étant donné que vous souhaitez afficher la valeur «écoulé depuis» dans l'interface utilisateur, votre ViewModel doit avoir une propriété appelée ElapsedTimeSince. Votre vue WPF a un contrôle lié à cette propriété. Maintenant, selon vos besoins, assurez-vous d'avoir un événement thread/timer qui réévalue périodiquement la valeur de la propriété en utilisant l'heure actuelle et la propriété StartDate du modèle. Votre interface utilisateur doit refléter la valeur mise à jour.

+1

Je pensais autant ... –

Questions connexes