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

Développement Windows Discussion :

Matrice WPF + Binding


Sujet :

Développement Windows

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Par défaut Matrice WPF + Binding
    Bonjour,

    Je voudrais créer une matrice afin d'afficher un système de droit.

    Je voudrais donc afficher une liste de personnes et une liste de fonctions.

    Le croisement entre les 2 me permettrait d'afficher une combobox pour définir si oui ou non il a le droit.

    Graphiquement parlant ça donnerait quelque chose de ce style :
    Nom : droit.png
Affichages : 253
Taille : 3,5 Ko


    Plusieurs points :

    Comment réaliser ceci en XAML ?

    Respecter le MVVM ...


    A savoir donc que les lignes représentent la table fonctions et les colonnes la table Groupe.

    L'intersection représente la table FonctionGroupe qui se compose de IDGroupe, IDFonction. Cette table n'est remplie que si la personne a le droit d'utilisé la fonction . (Simplification de ma part car sinon j'ai 2 booléen un écriture et 1 lecture)

    Si la personne n'a pas de droit d'utiliser la fonction alors je n'ai aucun enregistrement pour ce couple fonction/personne ; à ce moment la checkbox apparaît mais vide. (Cela me permet d'éviter de surcharger la table avec des lignes inutiles)

    Si la personne 1 n'a pas de droit sur la fonction 1 alors la ligne 1,1 n'existe pas dans ma BDD

    On supprime l'enregistrement lorsque l'on décoche et créer lorsqu'on coche.

  2. #2
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Bonjour,

    Je ne sais pas si c'est la bonne méthode mais tu pourrais faire un datatemplate dans ton conteneur où tu déclare tes checkbox dont la valeur est bindée sur une propriété de tes objets.

    Grosso modo, tu passe une liste de fonction en paramétre a ton conteneur. On va dire qu'une fonction a une propriété booléenne pour chaque groupe. Ces booléens représentent les droits de tes groupes pour cette fonction.

    Ensuite dans ton conteneur tu définis un datatemplate où tu définis ce qui sera affiché pour chaque objet : à savoir tes checkbox. Enfin tu bind tes checkbox sur la propriété booléenne qui correspond.

    Je pense qu'il y'a plus propre, mais normalement ça marche. Et il ne devrait pas y'avoir de problème avec ton MVVM.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Par défaut
    Le problème et que je vais avoir des cas avec la valeur null...

    (Je voudrais éviter de surcharger la table avec des valeurs false qui au final ne seront pas vraiment utilisées.)

    Le truc c'est que je veux garder l'idée du tableau à 2 dimensions et donc afficher la checkbox même pour les valeurs non définis.


    Ma Bdd ressemble à ça :

    Functions ( idFunction, Name )

    Persons ( idPerson, Firstname, Birthday )

    Right ( #idPerson, #idFunction )


    Tu pensais à quelque chose comme ça ?
    Nom : droit3.png
Affichages : 231
Taille : 2,4 Ko

    Je peux effectivement lister les groupes par fonction, mais dès lors qu'une fonction à moins de groupe qu'une autre alors la checkbox n'apparait plus car ne fait plus partie de la liste.

    Le résultat serait de ce style non ?
    Nom : droit3.png
Affichages : 234
Taille : 4,8 Ko

    Edit
    :
    Il faut savoir que les groupes et les fonctions changent, c'est complètement dynamique

  4. #4
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Le problème avec le binding, c'est qu'il te crée autant d'objet que tu lui en passe dans la liste, donc si une fonction contient 3 groupes d'ayant droit, tu vas avoir 3 checkbox cochées mais aucune de décochées. Pour les avoir quand même d'affichés il faudrait que tu crée des objets ayant comme droit false.

    Tu peux par exemple au moment d'appeler ta vue et de lui passer ta liste d'objet créer tous les objets false correspondants.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Par défaut
    Il faudrait donc que je fasse un nouvel objet qui contiendrait la fonction et le groupe ainsi qu'un booléen.

    Lors du chargement j'initialise les valeurs de ce booléen avec ce que j'ai en BDD.

    Et donc lorsque je change le booléen je créer/supprime un objet via le setter...

    Sa me fait créer une classe de plus.

    Je sais pas si j'ai bien compris ce que tu voulais me dire.

  6. #6
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    C'est ça grosso modo, tu pourrais créer tous les objets FonctionGroupe possible en initialisant les droits à false, puis tu parcours ta liste d'objet en base et tu modifier les droits a true pour les objets qui correspondent. De cette manière tu te retrouve avec une liste de tous tes objets FonctionGroupe avec les droits actuels mais seulement coté programme et non coté BDD. Ça devrait coller parfaitement au binding pour tes checkbox.

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Par défaut
    ok, merci pour les infos.

    Je vais essayer de créer un sample et de le poster pour d'autres personnes.

    Je mettrai le marqueur résolu dès le sample posté.

    J'ai trouvé ceci : http://www.codeproject.com/Articles/...taGrid-Control.

    Ce qui fait exactement ce que je veux mais alors jpige absolument pas tout.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/01/2008, 09h18
  2. [WPF] Binding et type custom
    Par sehshe dans le forum Framework .NET
    Réponses: 6
    Dernier message: 09/01/2008, 10h19
  3. wpf binding avec un dataset sans listbox
    Par ZashOne dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 25/12/2007, 19h09
  4. [WPF][Binding] Comment binder un fichier XML sur un treeview?
    Par bakonu dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 26/11/2007, 17h09
  5. [WPF] Binding sur app.config
    Par despeludo dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 24/10/2007, 22h56

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