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

Silverlight Discussion :

Disable automatique sur combobox vide (MVVM)


Sujet :

Silverlight

  1. #1
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 103
    Points
    103
    Par défaut Disable automatique sur combobox vide (MVVM)
    Bonjour à tous !

    Je reprends la suite du post combobox-dynamique-mvvm/ avec une petite question complémentaire. Mais puisqu'elle n'est pas en rapport direct, j'ai présumé qu'il fallait ouvrir une autre discussion.

    Pour des soucis d'ergonomie, je souhaite désactiver la combobox ville si la liste retournée après sélection du département est vide.

    J'ai donc créé une propriété bool EnableComboVille et je teste la liste retournée.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (_selectedDepartment != null)
            {
    	EnableComboVille = (_cities.Where(c => c.Department == _selectedDepartment).ToList() >0);
                return _cities.Where(c => c.Department == _selectedDepartment).ToList();
            }
            return _allCities;

    Y a-t-il plus simple comme approche ?

    Merci d'avance,

    Frédéric

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    En terme de performance j'aurais stocker le resultat de "_cities.Where(....)" dans une liste temporaire parceque tu te retapes deux fois l'ensemble de tes Cities.
    Bon rien de dramatique m'enfin potentiellement si y a d'autre endroit comme ca tu grattes les centiemes de secondes par-ci par là .

    Sinon moi j'aurais plutôt fait un Converter qui prend en parametre Cities et qui test si null ou Count ==0 ou Count >0;
    Code Xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <ComboBox ItemsSource="{Binding Departments}"
                    DisplayMemberPath="Name"
                    SelectedItem="{Binding SelectedDepartment, Mode=TwoWay}" />
     
    <ComboBox ItemsSource="{Binding Cities}" IsEnabled="{Binding Cities,Converter={StaticResources TonConverter}}"
                    DisplayMemberPath="Name" />

    Mais ca fait faire un converter en plus... Je crois pas que ca soit plus clair .

  3. #3
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    Merci Micka132 !
    C'est bien ce que je pensais aussi ... Questionner la base 2 fois, c'est vraiment pas optimisé!

    Si personne n'a mieux, je vais regarder ton approche. Un converter me semble effectivement plus approprié qu'une variable booleène.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    perso j'ai crée une propriété aussi part contre j'ai pas bien compris le code que tu as envoyer

    Normalement tu as déjà dans ton modèle la liste des départements donc suffit de tester celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public bool ComboBoxCitiesIsEnabled
            {
                get
                {
                    if (IsReadOnly) return false;
                    if (listDepartements == null || listDepartements.Count<1
                           || listCities == null || listCities.Count<1) return false;
                    return true;
                }
            }
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  5. #5
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    perso j'ai crée une propriété aussi part contre j'ai pas bien compris le code que tu as envoyer

    Normalement tu as déjà dans ton modèle la liste des départements donc suffit de tester celle-ci
    public bool ComboBoxCitiesIsEnabled
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            {
                get
                {
                    if (IsReadOnly) return false;
                    if (listDepartements == null || listDepartements.Count<1
                           || listCities == null || listCities.Count<1) return false;
                    return true;
                }
            }
    En fait, on doit tester les villes ... Si dans un département il n'y a pas de villes, la combo reste disabled. Etant donné que la liste des villes reste entière, c'est la requête linq qui va nous donner le résultat (ça évite de requéter la base).
    Celà dit, on peut également faire la requête dans le get de la propriété bool ... Très bonne idée !!

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Le problème c'est qu'il manque un notifyPropertyChanged derriere .
    Ce qui va revenir à faire un test de nullité pour voir si tu appeles le OnPropertyChanged("EnableComboVille "); on se mord la queue^^

  7. #7
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Le problème c'est qu'il manque un notifyPropertyChanged derriere .
    Ce qui va revenir à faire un test de nullité pour voir si tu appeles le OnPropertyChanged("EnableComboVille "); on se mord la queue^^
    oups !!!

    Merci pour le suivi Micka !

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public List<Cities> ListCities
    {
                get { return _listCities; }
                set
                {
                    listCities= value;
                    NotifyPropertyChange("ComboBoxCitiesIsEnabled");
                }
    }
    et tu as surement un events qui quand on change de départements ca reload ListCities :p
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public List<Cities> ListCities
    {
                get { return _listCities; }
                set
                {
                    listCities= value;
                    NotifyPropertyChange("ComboBoxCitiesIsEnabled");
                }
    }
    Oui c'est possible, mais philosphiquement parlant ca n'a pas de sens!

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

Discussions similaires

  1. [AC-2010] comboBox vide sur le formulaire
    Par ESVBA dans le forum Access
    Réponses: 3
    Dernier message: 08/07/2015, 08h45
  2. Ajouter un élément vide automatiquement sur un combobox
    Par boby62423 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 02/02/2009, 17h45
  3. une ligne vide s'ajout automatiquement sur un datagrid
    Par tsdia2 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/06/2008, 18h54
  4. Event Click droit sur ComboBox
    Par AF_STjohn dans le forum C++Builder
    Réponses: 8
    Dernier message: 29/04/2005, 11h48
  5. Problèmes d'évènements sur ComboBox
    Par bakaneko dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2004, 08h46

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