IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

stocker la référence de mes objets


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut stocker la référence de mes objets
    Bonjour,

    je développe actuellement une application WPF en c#. Je pense que ma question est simple, mais ça me bloque.

    Comment est ce que l'on fait dans une application WPF pour garder toujours la même référence à un objet?

    Par exemple j'ai une application principale qui par le biais d'une classe décodage crée des composant et les stock dans un plan. Je voudrais pouvoir consulter voir modifier mes composants ou que je sois dans l'application.

    Est ce que je dois créer une classe avec le pattern Singleton qui va me permettre de stocker mon plan ou est ce que je dois créer mon plan dans le code-behind de App.xaml ?

    J'ai tenter de comprendre cela en téléchargeant divers application, mais je n'ai rencontré, dans aucune d'entre elles, les deux cas que je vient d'énoncer.

    Je vous remercie d'avance pour la rapidité de votre réponse.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut
    Bonjour,

    Je pense ne pas bien avoir saisi ta question. Je n'ai pas bien saisi de quel type d'objets et composants tu parles ainsi que de ce qu'est ton "plan".

    Ce que tu souhaites faire c'est instancier des Vues (UserControl ou autres Contrôles) une seule fois dans l'application et pouvoir les réafficher dans de multiples endroits ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut
    Je pense ne pas bien avoir saisi ta question. Je n'ai pas bien saisi de quel type d'objets et composants tu parles ainsi que de ce qu'est ton "plan".
    pour moi objet et composant sont des instanciations d'une classe.
    mon plan est une classe réalisé pour stocker les composant précédement instancié.

    D'habitude dans une application (non WPF) on crée une classe Appli utilisant le pattern Singletton pour garder une référence au objet créé.

    Ce que je veux savoir c'est, Comment est ce que l'on fait sur WPF pour toujours retrouver les références des objets créés. Est ce que l'on procède de la même façon où est ce qu'il faut utiliser App.xaml.cs?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut
    Bonsoir,

    J'ai vu ce que je voulais voir dans ta réponse.

    En WPF une fois qu'un composant graphique a été instancié et affiché il se retrouve relié à une instance d'un autre objet graphique, son parent.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Grid>
        <MyUserControl />
    </Grid>
    Le composant de type MyUserControl se retrouve ici attaché à un parent qui est une grille. Pour pouvoir afficher cet objet ailleurs plus tard il va falloir le détacher de son parent, nettoyer son contexte de donnée (DataContext) et le réattacher plus loin. C'est très fastidieux et peu performant au final.
    Afin d'approfondir un peu plus le sujet tu peux rechercher WPF VisualTree et WPF LogicalTree dans ton moteur de recherche favori.

    Donc en fait généralement en WPF on ne conserve pas les instances des objets graphiques créés mais plutôt leurs DataContext. En utilisant un "pattern" du style MVVM tu peux restaurer l'état visuel de ton contrôle en lui remettant son ancien contexte. Du coup ce ne sont plus que des objets classiques que tu sauvegardes et alors libre à toi d'en faire des Singleton.
    Si tu utilises MVVM tu peux regarder du coté des ViewModelLocator pour atteindre ton but.

    Sinon petite appartée, si jamais tu veux faire des singletons dans une application il vaux mieux utiliser un moteur d'IoC pour ça (Inversion de contrôle) et faire de l'injection de dépendence. Comme ça le concept même de singleton sera externalisé et centralisé dans un endroit à part.
    Parmi les bon moteurs d'injection tu trouveras dans un ordre tout à fait aléatoire :
    - Unity
    - CastleWindsor
    - StructureMap

    Tu peux aussi trouver des moteurs d'IoC plus ou moins basiques dans certains framework MVVM comme MvvmLight.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/06/2008, 23h08
  2. Réponses: 4
    Dernier message: 23/06/2008, 17h10
  3. Réponses: 13
    Dernier message: 12/09/2005, 09h09
  4. Comment stocker une référence vers un TTreeNode ds un DFM ?
    Par phplive dans le forum Composants VCL
    Réponses: 1
    Dernier message: 19/07/2005, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo