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 :

Lier un radioButton à la valeur de l'item sélectionné d'une listBox [Débutant]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut Lier un radioButton à la valeur de l'item sélectionné d'une listBox
    Salut à toutes et a tous,

    Je sèche sur un point, et je ne trouve pas la solution (mauvaise clé de recherche ?)

    Soit une classe ObservableCollection<Personne> dans un fichier CS différent du MainWindow.xaml.cs mais dans le même NameSpace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    namespace EspaceNom{
        public enum Sexes { F, M };
     
     
        public class ListePersonnes : ObservableCollection<Personne>
        {
        }
     
        [Serializable]
        public class Personne: IComparable
        {
            public string Nom { get; set;}
            public string Prénom { get; set; }
            public Sexes Sexe { get; set; }
            ...
    ListePersonnes est l'itemsSource d'une listBox

    J'ai des champs textes bindés et qui fonctionnent. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Text="{Binding ElementName=listBoxPersonnes, Path=SelectedItem.Nom}"
    Ce que je cherche, bien entendu, est de faire la même chose avec des radioButton pour le sexe.

    J'ai trouvé que je devais créer un converter et j'ai pris ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public class EnumToBoleanConverter : IValueConverter    {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                return value.Equals(parameter);
            }
     
     
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                return value.Equals(true) ? parameter : Binding.DoNothing;
            }
        }
    Dans mon xaml j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                            <RadioButton x:Name="SexeMRadioButton" Grid.Row="1" Grid.Column="3" HorizontalAlignment="Right" Margin="0,25,45,0" VerticalAlignment="Top" GroupName="CadetSexe" IsChecked="{Binding ElementName=listBoxCadets, Path=SelectedItem.Sexe, Converter={StaticResource EnumToBoleanConverter}, ConverterParameter={x:Static local:Sexes.M}}"/>
                            <RadioButton x:Name="CadetSexeFRadioButton" Grid.Row="1" Grid.Column="3" Margin="0,25,15,0" VerticalAlignment="Top" GroupName="CadetSexe" HorizontalAlignment="Right" Width="22"/>
    Et c'est ici que ça coince.

    Ça me retourne 3 erreurs :
    Erreur 1 : Le préfixe "local" de l'espace de noms n'est pas défini.
    Erreur 2 : Sexes n'est pas pris en charge dans un projet Windows Presentation Foundation (WPF).
    Erreur 3 : Erreur de build inconnue, 'Key ne peut pas être null. Nom du paramètre : key Ligne 92 Position 191.'

    Je ne comprend pas pourquoi il ne veut pas de l'enum Sexes puisqu'elle est publique et dans le NameSpace. Il me semble qu'elle doit être accessible, non ?
    La ligne 92 position 191 correspond à la première lettre de IsChecked. Si je comprend bien, il se plaint au cas ou la personne serait nulle. Est-ce bien ça ? Si oui, comme dois-je faire ?




    Merci de vos z'avis z'avisé,
    JM
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

  2. #2
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Il doit manquer 2 choses :

    - mapping du namespace "EspaceNom" en haut du XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:local="clr-namespace:EspaceNom"
    - une ressource instanciant le converter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Window.Resources>
        <local:EnumToBoleanConverter x:Key="EnumToBoleanConverter"></local:EnumToBoleanConverter>
    </Window.Resources>
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut
    Arf, en effet.

    Je me décide enfin à passer de WinForms à WPF. Ça a effectivement l'air très performant, mais il y a beaucoup de "petites" choses à ne pas oublier, et je suis loin d'être encore habitué.

    Merci Pragmateek.
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

  4. #4
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Oui si tu débutes tu n'en as pas fini avec ce genre de petites erreurs, mais une fois passée cette 1ère phase un peu difficile ça ira beaucoup mieux.
    Et une fois que tu maîtrises à peu près tu apprécieras les gains en qualité de ton code et en productivité également.
    WPF ce n'est pas que du bonheur mais c'est sans commune mesure avec WinForms.

    Si tu as tu temps je te conseille de te faire un bouquin de A à Z (en zappant bien sûr les sujets qui ne te concernent pas, e.g. typiquement la 2D, la 3D et les documents pour les LOBs c'est inutiles).
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

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

Discussions similaires

  1. [AC-2010] N'avoir aucun item sélectionné dans une listbox
    Par neb2k7 dans le forum IHM
    Réponses: 2
    Dernier message: 18/07/2014, 21h37
  2. [Débutant] Retrouver les items sélectionnés dans une listbox
    Par Shennong dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/05/2014, 16h02
  3. [Débutant] Supprimer des fichiers à partir des items sélectionnés d'une listbox
    Par Shennong dans le forum VB.NET
    Réponses: 16
    Dernier message: 12/05/2014, 18h24
  4. [XL-2007] Item sélectionné dans une listbox
    Par gds35 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/03/2010, 17h45
  5. Réponses: 3
    Dernier message: 18/06/2005, 00h31

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