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.
ListePersonnes est l'itemsSource d'une listBox
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; } ...
J'ai des champs textes bindés et qui fonctionnent. Exemple :Ce que je cherche, bien entendu, est de faire la même chose avec des radioButton pour le sexe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Text="{Binding ElementName=listBoxPersonnes, Path=SelectedItem.Nom}"
J'ai trouvé que je devais créer un converter et j'ai pris ceci :
Dans mon xaml j'ai mis :
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; } }
Et c'est ici que ça coince.
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"/>
Ç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
Partager