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 :

Liaison de donnée à un Canvas via DataBinding et pattern MvvM


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Par défaut Liaison de donnée à un Canvas via DataBinding et pattern MvvM
    Bonjour à tous,
    Je suis en train de travailler sur un projet WPF, et je dois pouvoir placer un nombre indéterminer d'item. (Le comportement du truc ce rapproche de celui du bureau windows sans l'alignement sur la grille, et sans la réorganisation automatique).
    Chaque Item à une position variable, j'ai bien tenté d'utiliser un Canvas, mais le compilateur couinait dés que je rajoutais un item dedans.
    J'ai aussi essayer d'utiliser la listView personnalisé de l'exemple de la MSDN, mais j'arrivais pas à personnalisé les positions.

    Dans ce projet j'utilise le pattern MVVM, ce qui rajoute un peu plus de difficulté.
    Je voulais savoir quel composant vous me conseiller d'utiliser par défaut ou personnalisé, et éventuellement les modifications à y apporter.
    D'avance Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Un canvas comme conteneur me semble une bonne idée si tu veux placer tes objets où bon te semble.

    Citation Envoyé par satanasdiabolo
    j'ai bien tenté d'utiliser un Canvas, mais le compilateur couinait dés que je rajoutais un item dedans.
    C'est à dire ? C'est quelque chose de faisable donc peut-être qu'on peut voir ce qui ne va pas.


    Un lien qui peut peut-être t'intéresser
    http://www.codeproject.com/KB/WPF/WP...ner_Part1.aspx

    [Edit] Avec le lien c'est mieux

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Par défaut
    En fait le bug du caneva devais venir de VS2010
    dès que je faisais:
    Mais j'ai un problème vu que j'utilise le pattern MVVM.
    Sans le pattern je ferais l'ajout d'élément dans le coe behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.myCanvas.Children.Add(monElement);
    Le problème est comment je fais pour lier ma liste d'éléments qui est dans mon ViewModel à mon Canvas.
    Chose relativement aisée avec une ListeView.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    ceci étant pour des position variables tu peux jouer avec les margin
    j'ai pas bien compris ce que tu voulais faire mais bon
    avec un converter sur les item to margin

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Par défaut
    En effet Ikea, c'est ce que je comptais utiliser dans mon Canvas, mais j'arrive pas à ajouter mes élements au canvas via le binding.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <canvas Children="{Binding MaSourceDeDonnée}"/>
    n'existe pas puisqu'on ne peux pas appeler children comme ça. Uniquement avec le code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <Canvas>
         <Canvas.Children>
         </Canvas.Children>
    </Canvas>
    Et du coup sur ce coup là on peut pas mettre de balise de Binding.

    Si quelqu'un a une solution...

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Une solution serait peut-être de faire du MultiBinding sur la propriété Tag du Canvas (à trester ). Tu bindes à la fois les éléments à ajouter au Canvas et le Canvas lui même.
    Et dans le converter tu fais le Add des éléments sur la propriété children du Canvas.

    ps: binder l'élément lui même je n'ai pas le souvenir de l'avoir fait. Faut voir ce que ça peut donner et puis il y a peut être plus propre après

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. l'expert Liaison de données XML
    Par LN(a) dans le forum Delphi
    Réponses: 1
    Dernier message: 01/12/2006, 18h15
  2. [MySQL] problème ajout donnée dans BDD via php
    Par Skeud007 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/05/2006, 23h41
  3. Transmettre des données à un executable via visual basic
    Par kantelise dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/12/2005, 08h59
  4. Où est l'Expert Liaison de données XML [BCB6]
    Par Colloc dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/02/2005, 14h33
  5. Liaison de données - formulaires
    Par Bikey dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 21/10/2004, 15h05

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